POJ2287 Tian Ji -- The Horse Racing(田忌赛马/贪心)
2015-11-11 22:11
274 查看
贪心策略:
1,如果田忌的最快马快于齐王的最快马,则两者比。
(因为若是田忌的别的马很可能就赢不了了,所以两者比)
2,如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比。
(由于所有的马都赢不了齐王的最快马,所以用损失最小的,拿最慢的和他比)
3,若相等,则比较田忌的最慢马和齐王的最慢马
3.1,若田忌最慢马快于齐王最慢马,两者比。
(田忌的最慢马既然能赢一个就赢,不见得一定比齐王倒数第二慢的马快)
3.2,其他,则拿田忌的最慢马和齐王的最快马比。
(反正所有的马都比田忌的最慢马快了,所以这匹马必输,不如拼掉齐王的最快马)
1,如果田忌的最快马快于齐王的最快马,则两者比。
(因为若是田忌的别的马很可能就赢不了了,所以两者比)
2,如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比。
(由于所有的马都赢不了齐王的最快马,所以用损失最小的,拿最慢的和他比)
3,若相等,则比较田忌的最慢马和齐王的最慢马
3.1,若田忌最慢马快于齐王最慢马,两者比。
(田忌的最慢马既然能赢一个就赢,不见得一定比齐王倒数第二慢的马快)
3.2,其他,则拿田忌的最慢马和齐王的最快马比。
(反正所有的马都比田忌的最慢马快了,所以这匹马必输,不如拼掉齐王的最快马)
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <string.h> #include <algorithm> using namespace std; #define maxn 1005 int main() { int n; int tian[maxn],king[maxn]; int i,max1,max2,min1,min2,ans; while(~scanf("%d",&n),n) { for(i=1;i<=n;i++) { scanf("%d",&tian[i]); } for(i=1;i<=n;i++) { scanf("%d",&king[i]); } sort(tian+1,tian+1+n); sort(king+1,king+1+n); max1=max2=n; min1=min2=1; ans=0; int num=0; while((num++)<n) { if(tian[max1]>king[max2]) { max1--; max2--; ans+=200; } else if(tian[max1]<king[max2]) { min1++; max2--; ans-=200; } else { if (tian[min1] > king[min2]) { ans+= 200; min1 ++; min2 ++; } else { if (tian[min1] < king[max2]) { ans-= 200; } min1 ++; max2 --; } } } printf("%d\n",ans); } return 0; }
相关文章推荐
- Leetcode153: Permutation Sequence
- 初级练手的小项目列表
- 数据库管理与PL/SQL编程
- 减小字体文件的大小方案
- ClassNotFoundException异常的解决方法
- AreaNum
- PHP衣食父母系列-依赖倒置
- 解决为什么内网不能用公网地址访问内网服务器
- 深入Java单例模式
- 排序算法-基数排序_基数排序
- Objective-C面向对象编程-知识点汇总
- 四道道经典的笔试题
- test2dfd
- 如何将真彩色图转换为各种灰度图
- 笔试题: 不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数
- Android shape 各种参数 详解
- 滤波方法 PF KF EKF UKF
- Eclipse常用快捷键
- 0019将字符串逆序操作
- 新浪微博SDK抛出异常-[__NSDictionaryM weibosdk_WBSDKJSONString]: unrecognized selector sent to instance 0x7fb