UVALive
来源:互联网 发布:班主任网络研修计划 编辑:程序博客网 时间:2024/05/29 15:47
题意:
田忌赛马的故事,如果田忌赢了一把就赢200如果输了就-200,给出马匹的速度,求田忌的最大收益。
思路:
分三种大情况,
1.如果田忌的最快的马能赢国王最快的马那就比,
2.如果不能赢那就用田忌最慢的马去消耗国王最强的马,
3.最后一种大情况比较复杂,单独展开来说:如果田忌最快的与国王最快的马速度相等,别急着比快马。先比较田忌最慢的马和国王最慢的马,如果田忌慢马赢的了国王慢马,那就比,如果赢不了那就用这匹慢马去消耗国王的快马,这样田忌的快马就会保留下来。大概就是这样,一直比下去。还有一些细节讲不完,附上几组坑点,如果wa了,自己测试一下。
2 2 3 4
1 2 3 4
--------输出400
1 1 1 1
1 1 1 1
---------输出0
1 3 4 6
1 4 5 6
---------输出200
特别鸣谢jacknazi提供的样例。
#include <iostream>#include<cstring>#include<algorithm> using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */int tmax,tmin,gmax,gmin;int tian[1005],guo[1005];int main(int argc, char** argv) {int n;while(cin>>n&&n){int win=0;for(int i=0;i<n;i++)cin>>tian[i];sort(tian,tian+n);for(int i=0;i<n;i++)cin>>guo[i];sort(guo,guo+n);gmax=tmax=n-1;tmin=gmin=0;while(gmax>=gmin){if(tian[tmax]>guo[gmax]){tmax--;gmax--;win++;}else if(tian[tmax]<guo[gmax]){tmin++;gmax--;win--;}else{if(tian[tmin]>guo[gmin]){//tmax--;gmax--;tmin++;gmin++;win++;}else if(tian[tmin]==guo[gmin]){if(guo[gmax]==tian[tmin]){gmax--;tmin++;}else{gmax--;tmin++;win--;}}else{gmax--;tmin++;win--;}}}printf("%d\n",win*200);}return 0;}
阅读全文
0 0
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- Java反射
- 有关Function Try Block的法则
- 构造函数与析构函数的应用
- MySQL 中文乱码问题
- linq to sql
- UVALive
- hdu 1080 Human Genne Function
- 由一道题引发的关于输入输出的总结
- springMVC初识 源码末尾
- 线性表 —— 1
- HDU1282回文数猜想
- opencv3学习之addWeight()函数
- ISP-坏点校正(DPC)
- 卡西欧手表城市编码,调时区用