hdu 1052 (greedy algorithm)

来源:互联网 发布:教练技术 知乎 编辑:程序博客网 时间:2024/05/19 02:38

thanks to
http://acm.hdu.edu.cn/discuss/problem/post/reply.php?action=support&postid=19638&messageid=1&deep=0
for the test case provided. below is an excerpt
data
8
11 9 8 8 8 4 3 2
11 8 8 8 8 4 3 2
answer
800

#include <cstdio>#include <algorithm>#define MAXSIZE 1002int main() {    //freopen("input.txt","r",stdin);    int tian[MAXSIZE], king[MAXSIZE];    int nhorse,i,win,tie, tb,te,kb,ke;    while(scanf("%d",&nhorse)==1 && nhorse>0) {        for(i=0;i<nhorse;++i) scanf("%d",&tian[i]);        for(i=0;i<nhorse;++i) scanf("%d",&king[i]);        std::sort(tian,tian+nhorse,[](const int lhs, const int rhs) { return lhs>rhs; });        std::sort(king,king+nhorse,[](const int lhs, const int rhs) { return lhs>rhs; });        for(win=tie=0, tb=kb=0,te=ke=nhorse-1;tb<=te;) {            if(tian[tb]>king[kb]) { ++win; ++tb; ++kb; }            else if(tian[tb]<king[kb]) { --te; ++kb; }            else if(tian[te]>king[ke]) { ++win; --te; --ke; }            else {            if(tian[te]==king[kb]) ++tie;            --te; ++kb;            }        }        nhorse-=tie;        printf("%d\n",((win<<1)-nhorse)*200);    }    return 0;}
0 0
原创粉丝点击