codevs2181 田忌赛马
题目描述 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 田忌赛马相关推荐
- 田忌赛马贪心算法_田忌赛马 贪心算法
算法实验课回顾 田忌赛马 问题描述: 你一定听说过田忌赛马的故事吧?如果3匹马变成n匹(n<=100),齐王仍然让他的马按照优到劣的顺序初赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以 ...
- [ZJOI2008]泡泡堂(田忌赛马贪心)
problem 洛谷链接 solution 田忌赛马孪生兄弟. 浙江选手最坏情况就是外省最好情况,所以本质上两个子问题是同一个做法. 相信所有人都是读完题后就有田忌赛马的思想了.(如果还没上过小学语文 ...
- 田忌赛马c语言程序设计,还是杭电1052田忌赛马
已结贴√ 问题点数:20 回复次数:2 还是杭电1052田忌赛马 //昨天那个算法漏洞挺大,但我重新构思了,但运行到312ms还是wa了.我测试了许多数据,结果是对的,郁闷了,谁能救救我啊? #inc ...
- 可以使用田忌赛马类贪心问题的前提(或说 如何判断题目符合田忌赛马类贪心问题)
前提就是,首先,需要两个数组!!两个数组!!两个数组!!才可以考虑这个! 其次,A和B这两个数组的个数是相同的.也正因为如此,所以从大到小排序或者从小到大排序都可以解出来,因为他们都是一一对应的关系, ...
- 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 ...
- [sicily]【1001】 会议安排(田忌赛马类贪心)
题干: N个会议要同时举行,参会人数分别为A[0], A[1], ...,A[N-1]. 现有M个会议室,会议室可容纳人数分别为B[0], B[1], ...,B[M-1]. 当A[i]<=B[ ...
- POJ 2287 田忌赛马(贪心)
文章目录 1. 题目 1.1 题目链接 1.2 题目大意 1.3 解题思路 2. Accepted 代码 1. 题目 1.1 题目链接 http://poj.org/problem?id=2287 1 ...
- 贪心法田忌赛马问题Java代码,hdoj 1052 Tian Ji - The Horse Racing【田忌赛马】 【贪心】...
hdoj 1052 Tian Ji -- The Horse Racing[田忌赛马] [贪心] 思路:先按从小到大排序, 然后从最快的开始比(假设i, j 是最慢的一端, flag1, flag2是 ...
- ❤️震惊!人生苦短,我用python来玩田忌赛马❤️
一读标题笑死自己哈哈哈,最近猪哥(玩得敲好的彭友)找我帮忙解决他不会作业哈哈哈,他们公司自己出的笔试题哈哈哈,希望别被他们出题人看见哈哈哈,回想猪哥说的一句话,万一这就是以后你遇到的试题呢哈哈哈.突然 ...
最新文章
- 分享EOS加拿大的文章《REX——从源代码做技术解析》
- [BUUCTF-pwn]——[Black Watch 入群题]PWN
- 开发基础(字符编码、列表操作)
- Elasticsearch教程 IK分词器安装
- linux shell if语句使用方法
- linux嵌入式面试题合集,嵌入式linux面试题解析(一)——ARM部分二
- 会议交流 | IJCKG 2021 日程表(北京时间)
- C语言给考场编号,求:用C设计考场的编排,生成准考证号基本要求:br/(1)用 爱问知识人...
- 如何攻克 Android 调试难题?| 技术头条
- 20210621:力扣第246周周赛(上)
- spring boot部署实战
- React Native常用第三方汇总
- Linux驱动开发经典书籍
- 携程2021年校招笔试题[2021年10月21日19点-21点]
- python 自定义 计算向量投影 正交 函数
- 2、申请苹果App ID
- 如何有效开展小组教学_如何有效开展小组合作学习活动
- 大数据领域就业和发展指南
- 【数据结构】八大经典排序(两万字大总结)
- 百度地图与腾讯/高德地图经纬度转换