A题:从两个保安中间那钞票
1 #include2 3 using namespace std; 4 5 int main() 6 { 7 int a,b,c; 8 scanf("%d%d%d",&a,&b,&c); 9 int n;10 scanf("%d",&n);11 int pos;12 int ans = 0;13 for(int i=0;i b&&pos
B题:切胡萝卜,每个面积相等;公式化简到最简试,否则精度会损失
1 #include2 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 double h; 9 scanf("%d%lf",&n,&h);10 /*11 double s = h/n;12 double S = h;13 for(int i=0;i
C题:两个绝顶聪明的人,第一个人要字典序最小,第二个人字典序最大;
贪心:
第一个人从小到大排,第二个人从大到小排,
当第一个人的最小的都大于第二个人的,那么他只能放到字符后面(否则第二个人就得逞了,他把他的放到后面),但是这样还不够,因为他反正还要继续放,那么他后面的操作将大于这次的,为何不交换一下呢? 这时,他应该从他的最大的那一个放到后面;
1 #include2 3 #include 4 5 #include 6 7 #include 8 9 using namespace std;10 11 const int maxn=300000+10;12 13 char A[maxn],B[maxn],ans[maxn];14 15 bool cmp(char a,char b) {16 return a>b;17 }18 19 int main() {20 21 scanf("%s%s",A,B);22 int len=strlen(A);23 int l1=0,l2=0;24 int r1,r2;25 int L=0,R=len-1;26 r1=(len+1)/2-1;27 r2=len/2-1;28 sort(A,A+len);29 sort(B,B+len,cmp);30 for(int i=0; i