hdu 1052

来源:互联网 发布:js 文字字数限制 编辑:程序博客网 时间:2024/05/19 04:55

田忌赛马,一开始还逗比得在那二分匹配= =

自己贪心失败了,只想着从一头贪心,没想到是从两头考虑

1.自己的最快的马比对方最快的快,秒掉

2.自己最慢的比对方最慢的快,秒掉

3.自己最快的比对方最快的慢,拿自己最慢的马当炮灰

4.自己最慢的比对方最慢的慢,必然炮灰

5.最快和最慢都相等

如果不牺牲最慢的马,那么相当于最快和最慢分别打平局,也相当于用自己最慢的打对方最快的,同时用自己最快的打对方最慢的,最慢的马也想当于是牺牲了,还

不如留下最快的马去跟其他速度较快的马比赛。所以这种情况下必定牺牲最慢的马。

代码很简单。

#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int n,h1[1005],h2[1005];void input(){for(int i=0;i<=n-1;i++)scanf("%d",&h1[i]);for(int i=0;i<=n-1;i++)scanf("%d",&h2[i]);}int main(){while(scanf("%d",&n)!=EOF&&n){int ans=0;input();sort(h1,h1+n);sort(h2,h2+n);int s1=0,e1=n-1,s2=0,e2=n-1;for(int i=0;i<=n-1;i++){if(h1[e1]>h2[e2]){ans+=200;e1--;e2--;continue;}if(h1[s1]>h2[s2]){ans+=200;s1++;s2++;continue;}if(h1[s1]<=h2[s2]){if(h1[s1]<h2[e2]) ans-=200;s1++;e2--;continue;}}printf("%d\n",ans);}return 0;}

3.自己最快的比对方最快的慢,拿自己最慢的马当炮灰
0 0