hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马,贪心】
2015-08-24 23:28
375 查看
Total Submission(s): 22502 Accepted Submission(s): 6576
[align=left]Problem Description[/align]
想必大家都知道田忌赛马的故事吧,此处不再介绍故事内容;
.题目大意:给个整数n,表示田忌和齐王各有n匹马,接下来两行各有n个数,上一行表示田忌的马的速度,下一行表示齐王的马的速度;求田忌用孙膑教的方法最多能赢多少钱?
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
思路:先把两人的马拿去排序,升序或降序都可以(此处笔者用的是sort默认的,即升序);然后进行比较,比较有以下几种情况:{
①若田忌最快的马比齐王最快的马还快,直接胜出,二者次快的马变成最快的马;
②若田忌最快的马与齐王最快的马一样快,则比较二者最慢的马,比较最慢的马有以下几种情况:{
Ⅰ若田忌最慢的马比齐王最慢的马快,则田忌直接获胜,二者次慢的马变成最慢的马;
Ⅱ若田忌最慢的马与齐王最慢的马一样快,则有如下两种情况:{
㈠田忌最慢的马和齐王最快递马一样快,则战平;
㈡田忌最慢的马比齐王最快的马慢,则齐王胜;
}
Ⅲ若田忌最慢的马比齐王最慢的马慢,则田忌用最慢的马和齐王最快的马比,田忌次慢的马变最慢,齐王次快的变最快;
}
③若田忌最快的马比齐王最宽的马慢,则田忌用最慢的马和齐王最快的马比,田忌次慢的马变最慢,齐王次快的马变最快;
}
已Accpet的代码
Tian Ji -- The Horse Racing
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22502 Accepted Submission(s): 6576
[align=left]Problem Description[/align]
想必大家都知道田忌赛马的故事吧,此处不再介绍故事内容;
.题目大意:给个整数n,表示田忌和齐王各有n匹马,接下来两行各有n个数,上一行表示田忌的马的速度,下一行表示齐王的马的速度;求田忌用孙膑教的方法最多能赢多少钱?
[align=left]Sample Input[/align]
3 92 83 71 95 87 74 2 20 20 20 20 2 20 19 22 18 0
[align=left]Sample Output[/align]
200 0 0
思路:先把两人的马拿去排序,升序或降序都可以(此处笔者用的是sort默认的,即升序);然后进行比较,比较有以下几种情况:{
①若田忌最快的马比齐王最快的马还快,直接胜出,二者次快的马变成最快的马;
②若田忌最快的马与齐王最快的马一样快,则比较二者最慢的马,比较最慢的马有以下几种情况:{
Ⅰ若田忌最慢的马比齐王最慢的马快,则田忌直接获胜,二者次慢的马变成最慢的马;
Ⅱ若田忌最慢的马与齐王最慢的马一样快,则有如下两种情况:{
㈠田忌最慢的马和齐王最快递马一样快,则战平;
㈡田忌最慢的马比齐王最快的马慢,则齐王胜;
}
Ⅲ若田忌最慢的马比齐王最慢的马慢,则田忌用最慢的马和齐王最快的马比,田忌次慢的马变最慢,齐王次快的变最快;
}
③若田忌最快的马比齐王最宽的马慢,则田忌用最慢的马和齐王最快的马比,田忌次慢的马变最慢,齐王次快的马变最快;
}
已Accpet的代码
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[1001],b[1001],s[1001],v[1001]; int main(){ int n,i,j; while(scanf("%d",&n),n){ memset(v,0,sizeof(v)); memset(s,0,sizeof(s)); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); sort(a,a+n); sort(b,b+n); int q=0,k=0,t=n-1,f=n-1; int total=0; while(t>=q){ if(a[t]>b[f]){ //① t--; f--; total+=200; } else if(a[t]==b[f]){ //② if(a[q]>b[k]){ //Ⅰ q++; k++; total+=200; } else if(a[q]==b[k]){ //Ⅱ if(a[q]<b[f]){ //㈠ f--; q++; total-=200; } else{ //㈡ f--; q++; } } else{ //Ⅲ f--; q++; total-=200; } } else{ //③ f--; q++; total-=200; } } printf("%d\n",total); } return 0; }这篇与之前的一篇重了,sorry,原因就不说了,都怪自己心太急;
相关文章推荐
- Best Time to Buy and Sell Stock III
- [LeetCode#76]Minimum Window Substring
- 在cli/php.ini的文件添加xdebug报错
- CCActionTween,CCAnimationCache源码分析
- 使用mvn archetype:generate生产maven工程,响应很慢
- UVa-679 Dropping Balls
- 启动maven项目报错:java.lang.ClassNotFoundException: ContextLoaderListener解决方法
- 一次重定向引起的异步IO
- 简单演示Exploit SEH原理(未开启SafeSEH模块)
- UVA 11475 Extend to Palindrome(字符hash)
- 华为上机试题5(整数排序并删除一些元素)
- 推荐两个比较全的android在线源代码
- Hashtable
- 神经网络模型算法与生物神经网络的最新联系
- 猜拳游戏--最高效版本
- Linux环境下【mysql】修改mysql5.5默认编码
- Swift 语言基础算法
- Set
- [BZOJ1046][HAOI2007]上升序列
- MySQL简易建立餐厅数据库