Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
贪心过了,附代码都按照从大到小排序 1.如果我当前最大的比对面最大的大,拼 2.如果我当前最大的和对面最大的相等 再比较我当前最小的和对对面最小的, 2.1如果我的最小比对面最小的大,先把小的拼掉 2.2如果我的最小比对面最小的小,用我最小的和对面最大的拼掉 2.3如果最小的还是相等,这时要考虑是不是 类似: 1 1 1 1 这种情况,如果是的话,前面的拼掉, 如果是 2 1 2 1这种, 我的1和对面的2拼掉 3.如果我当前最大比对面最大的小,用我最小的和对面最大的拼掉 不知道是不是正确。。。不过能AC int main() { int N,i,j,ans,eq,a1,a2,b1,b2; int A[1005],B[1005],choosed[1005]; while(scanf("%d",&N),N) { memset(choosed,0,sizeof(choosed)); for (i=0;i<N;++i) scanf("%d",A+i); for (i=0;i<N;++i) scanf("%d",B+i); sort(A,A+N,greater<int>()); sort(B,B+N,greater<int>()); eq=ans=i=j=0; a1=b1=0;a2=b2=N-1; while(a1<=a2) { if(A[a1]>B[b1]) { ans++; a1++;b1++; }else if(A[a1]==B[b1]) { if(A[a2]>B[b2]) { ans++;a2--;b2--; }else if(A[a2]==B[b2]) { if (A[a2]<B[b1]) { ans--; b1++; a2--; }else { a1++;b1++; } }else { ans--; b1++; a2--; } }else { ans--; b1++; a2--; } } printf("%d\n",ans*200); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator