HDU 1052 Tian Ji -- The Horse Racing

来源:互联网 发布:我要下载淘宝网购物 编辑:程序博客网 时间:2024/06/10 05:18

田忌赛马  http://acm.hdu.edu.cn/showproblem.php?pid=1052

贪心思路:若田忌慢马能赢国王慢马则这两个比,若平局则慢马当炮灰输给王快马
    若比王慢马慢则不暂不处理,转而处理两者的快马。若快马能赢则赢,
    否则慢马当炮灰
原则:充分利用慢马,因为若慢马不能比对方慢马快则没价值

#include<stdio.h>#include<stdlib.h>#include<string.h>int tj[1002],king[1002];int cmp( const void *a , const void *b ){return *(int *)b - *(int *)a ;}int main(){int i,n,res,tj_st,tj_end,king_st,king_end;//freopen("a.txt","r",stdin);while(scanf("%d",&n),n){res = 0;for(i=0;i<n;i++)scanf("%d",&tj[i]);for(i=0;i<n;i++)scanf("%d",&king[i]);qsort(tj,n,sizeof(tj[0]),cmp);qsort(king,n,sizeof(king[0]),cmp);tj_st = 0,tj_end = n-1;king_st = 0,king_end = n-1;for(i=0;i<n;i++)//每次循环赛1次马{if( tj[tj_end] > king[king_end]){//慢马能赢res += 200;tj_end--;king_end--;}else {if( tj[tj_end] < king[king_end]){//慢马必输就当炮灰res -= 200;tj_end--;king_st++;}else//慢马平局时{if( tj[tj_st] > king[king_st] ){//快马能赢res += 200;tj_st++;king_st++;}else if(tj[tj_end] < king[king_st])//处理中可能出现慢马不慢于快马的情况{//快马平局或输对方快马就找慢马炮灰res -= 200;tj_end--;king_st++;}}}}printf("%d\n",res);}return 0;}


0 0
原创粉丝点击