题目描述 Description

中国古代的历史故事“田忌赛马”是为大家所熟知的。话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱。现在每匹马的速度值是固定而且已知的,而齐王出马也不管田忌的出马顺序。请问田忌该如何安排自己的马去对抗齐王的马,才能赢取最多的钱?

输入描述 Input Description

第一行为一个正整数n ,表示双方马的数量。
第二行有N个整数表示田忌的马的速度。
第三行的N个整数为齐王的马的速度。

输出描述 Output Description

仅有一行,为田忌赛马可能赢得的最多的钱,结果有可能为负。

样例输入 Sample Input

3
92 83 71
95 87 74

样例输出 Sample Output

200

数据范围及提示 Data Size & Hint

n <= 1000

题解 Solution

贪心时要充分利用每一匹马的战斗力,每匹马都尽量战胜对方速度最快的马(也就是实力比较接近,又能取胜),完全无法获胜的马去消耗对方的最高战力。

  • 代码
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;const int Inf = 2147483647;
const int maxn = 1000005;
int n, ans = 0, a[maxn], b[maxn];inline bool cmd(int a, int b)
{return a > b;
}int main()
{scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d", &a[i]);for(int i = 1; i <= n; i++)scanf("%d", &b[i]);sort(&a[1], &a[n + 1], cmd);sort(&b[1], &b[n + 1], cmd);int l1 = 1, r1 = n, l2 = 1, r2 = n;bool flag = true;for(int i = 1; i <= n; i++)if(a[i] != b[i]) flag = false;if(flag) {printf("0"); return 0;}while(l1 <= r1) {if(a[l1] > b[l2]) {ans += 200;l1++; l2++;}else if(a[l1] < b[l2]) {ans -= 200;r1--; l2++;}else if(a[l1] == b[l2] && a[r1] > b[r2]) {ans += 200;r1--; r2--;}else if(a[l1] == b[l2] && a[r1] <= b[r2]) {if(a[r1] < b[l2]) ans -= 200;r1--; l2++;}}if(ans < 0) printf("%d", 0);else printf("%d", ans);return 0;
}
  • 注意:结果为负数时要输出0

codevs2181 田忌赛马相关推荐

  1. 田忌赛马贪心算法_田忌赛马 贪心算法

    算法实验课回顾 田忌赛马 问题描述: 你一定听说过田忌赛马的故事吧?如果3匹马变成n匹(n<=100),齐王仍然让他的马按照优到劣的顺序初赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以 ...

  2. [ZJOI2008]泡泡堂(田忌赛马贪心)

    problem 洛谷链接 solution 田忌赛马孪生兄弟. 浙江选手最坏情况就是外省最好情况,所以本质上两个子问题是同一个做法. 相信所有人都是读完题后就有田忌赛马的思想了.(如果还没上过小学语文 ...

  3. 田忌赛马c语言程序设计,还是杭电1052田忌赛马

    已结贴√ 问题点数:20 回复次数:2 还是杭电1052田忌赛马 //昨天那个算法漏洞挺大,但我重新构思了,但运行到312ms还是wa了.我测试了许多数据,结果是对的,郁闷了,谁能救救我啊? #inc ...

  4. 可以使用田忌赛马类贪心问题的前提(或说 如何判断题目符合田忌赛马类贪心问题)

    前提就是,首先,需要两个数组!!两个数组!!两个数组!!才可以考虑这个! 其次,A和B这两个数组的个数是相同的.也正因为如此,所以从大到小排序或者从小到大排序都可以解出来,因为他们都是一一对应的关系, ...

  5. cf#401(Div. 2)B. Game of Credit Card(田忌赛马类贪心)

    题干: After the fourth season Sherlock and Moriary have realized the whole foolishness of the battle b ...

  6. [sicily]【1001】 会议安排(田忌赛马类贪心)

    题干: N个会议要同时举行,参会人数分别为A[0], A[1], ...,A[N-1]. 现有M个会议室,会议室可容纳人数分别为B[0], B[1], ...,B[M-1]. 当A[i]<=B[ ...

  7. POJ 2287 田忌赛马(贪心)

    文章目录 1. 题目 1.1 题目链接 1.2 题目大意 1.3 解题思路 2. Accepted 代码 1. 题目 1.1 题目链接 http://poj.org/problem?id=2287 1 ...

  8. 贪心法田忌赛马问题Java代码,hdoj 1052 Tian Ji - The Horse Racing【田忌赛马】 【贪心】...

    hdoj 1052 Tian Ji -- The Horse Racing[田忌赛马] [贪心] 思路:先按从小到大排序, 然后从最快的开始比(假设i, j 是最慢的一端, flag1, flag2是 ...

  9. ❤️震惊!人生苦短,我用python来玩田忌赛马❤️

    一读标题笑死自己哈哈哈,最近猪哥(玩得敲好的彭友)找我帮忙解决他不会作业哈哈哈,他们公司自己出的笔试题哈哈哈,希望别被他们出题人看见哈哈哈,回想猪哥说的一句话,万一这就是以后你遇到的试题呢哈哈哈.突然 ...

最新文章

  1. 分享EOS加拿大的文章《REX——从源代码做技术解析》
  2. [BUUCTF-pwn]——[Black Watch 入群题]PWN
  3. 开发基础(字符编码、列表操作)
  4. Elasticsearch教程 IK分词器安装
  5. linux shell if语句使用方法
  6. linux嵌入式面试题合集,嵌入式linux面试题解析(一)——ARM部分二
  7. 会议交流 | IJCKG 2021 日程表(北京时间)
  8. C语言给考场编号,求:用C设计考场的编排,生成准考证号基本要求:br/(1)用 爱问知识人...
  9. 如何攻克 Android 调试难题?| 技术头条
  10. 20210621:力扣第246周周赛(上)
  11. spring boot部署实战
  12. React Native常用第三方汇总
  13. Linux驱动开发经典书籍
  14. 携程2021年校招笔试题[2021年10月21日19点-21点]
  15. python 自定义 计算向量投影 正交 函数
  16. 2、申请苹果App ID
  17. 如何有效开展小组教学_如何有效开展小组合作学习活动
  18. 大数据领域就业和发展指南
  19. 【数据结构】八大经典排序(两万字大总结)
  20. 百度地图与腾讯/高德地图经纬度转换

热门文章

  1. 计算机专业学渣面试,感觉读了计算机专业真的是一条不归路
  2. 苹果公司联系邮箱大全
  3. CVE-2015-0235:幽灵(GHOST)漏洞解析
  4. 电子漫画系列更新9张美图,共计47张,收藏收藏!
  5. 首汽约车驶向极速统一之路!出行平台如何基于StarRocks构建实时数仓?
  6. 了解HTT1/HTT2/HTT3 ?
  7. 彩票走势图xcode源码
  8. 注册企业邮箱,怎么给国外的人发邮件?
  9. 9款红包封面来了,定好闹钟领取!
  10. DeDeCMS v5.7 SP2正式版 前台任意用户密码修改 漏洞复现