像我这种蒟蒻就非常适合做一些辣鸡题,比如一些简单的贪心题,今天偶遇田忌赛马,于是我就非常轻(费)松(力)地搞定了这道题。
题目:

时间: 1000ms / 空间: 131072KiB

描述

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

输入格式

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

输出格式

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

输入

3
92 83 71
95 87 74

输出

200

分析:
很明显的贪心嘛~~~
首先,双方的马按速度排序。

考虑己方最弱的马和对方最弱的马的速度关系。如果对方更弱,那么不妨就用这匹马去对对方的那匹马;如果我方更弱,那么不妨用这匹马和对方当前最强的马比赛。(平局稍后再说)

同样地,可以考虑己方最强的马和对方最强的马的关系。

不停地贪心处理,直到双方最强的马相等、最弱的马也相等。

这时,强制让这两局平局发生(划掉),用我方最弱的马输给对方最强的马(显然优于划掉的),其实并不一定输,还要比较一下我方最弱的马是否与对方最强的马的速度相等,如果相等,那就不会输了。
继续处理,直到所有的马都用完。

简单吧?!

代码:

#include <bits/stdc++.h>using namespace std;typedef long long LL;
typedef double DB;int Max(int a, int b){return a > b ? a : b;}
int Min(int a, int b){return a < b ? a : b;}const int MAXN = 1e3 + 15;int a[MAXN], b[MAXN];inline int read(){int r = 0, z = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') z = -1; ch = getchar();}while(ch >= '0' && ch <= '9'){r = r * 10 + ch - '0'; ch = getchar();}return r * z;
}bool cmp(int x, int y){return x > y;}void fre(){freopen(".in", "r", stdin);freopen(".out", "w", stdout);
}void init(){int n = read(), ans = 0;for(int i = 1; i <= n; i ++) a[i] = read();for(int i = 1; i <= n; i ++) b[i] = read();sort(a + 1, a + n + 1, cmp);sort(b + 1, b + n + 1, cmp);int h0 = 1, t0 = n, h1 = 1, t1 = n;while(h0 <= t0){if(a[h0] > b[h1]){ans ++; h0 ++; h1 ++;}else if(a[h0] < b[h1]){ans --; t0 --; h1 ++;}else if(a[t0] > b[t1]){ans ++; t0 --; t1 --;}else if(a[t0] < b[t1]){ans --; t0 --; h1 ++;}else {if(a[t0] < b[h1]){ans --; t0 --; h1 ++;}else if(a[t0] == b[h1]){t0 --; h1 ++;}}}printf("%d\n", ans * 200);
}int main(){
//  fre();init();return 0;
}

Tyvj P1048 田忌赛马 题解相关推荐

  1. 动态规划求解限时采药问题(洛谷P1048题题解,Java语言描述)

    题目要求 P1048题目链接 分析 荐读:大神博文 -> <聊聊动态规划与记忆化搜索> 这题就是一个标准的DP水题,对于不会DP的萌新,太难了!对于整天搞DP的算法大佬,水爆了! 荐 ...

  2. TYVJ 2002 扑克牌 题解

    P2002 扑克牌 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Admin生日那天,Rainbow来找Admin玩扑克牌-- 玩着玩着Rainbow觉得太 ...

  3. 【贪心】田忌赛马题解

    题目描述 田忌准备和齐王赛马,各自拿出的比赛马匹数是n个,胜负由每匹马的速度决定,田忌可 以自由选择自己的马和齐王的比赛,田忌赢一次赏金加50,输一次赏金赔50,田忌赚的 钱最低为0,求田忌最多能赚多 ...

  4. bzoj3224 Tyvj 1728 普通平衡树题解--Treap

    题面: Description您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有 ...

  5. tyvj 2075 借教室 题解

    P2075 [NOIP2012T5]借教室 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 noip2012-tg 描述 在大学期间,经常需要租借教室.大到院 ...

  6. 题解 P1650 田忌赛马

    (题面来自洛谷) 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...

  7. 田忌赛马java lms_题解 P1650 田忌赛马

    (题面来自洛谷) 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...

  8. tyvj间谍网络(强连通分量)题解

    题目描述见下列网址 http://www.tyvj.cn/  (P1153) 经过对题目的分析,可以得出,题目的要求就是求出图中的强连通分量连,然后进行缩点操作,最后枚举每一个入度为0的点,如果可以有 ...

  9. 拯救ice-cream Tyvj P1117 题解

    依旧还是BFS吧. 如果当前点是草地,则必须把草地先变成道路,拓展后的点与拓展前的点相同,并且时间+1,这样我们就保证了草地这个点经过了 两次,且时间增加了2 program P1117;constd ...

最新文章

  1. CodeGen融合核心关系循环扩展
  2. 电脑开机显示Invalidsystemdisk
  3. python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...
  4. Github学习系列之Github是什么?
  5. 洛谷 P2867 [USACO06NOV]大广场Big Square
  6. 算法复杂度为O(N) 的排序算法
  7. Redis数据类型--散列类型
  8. cssbefore图片大小_我可以在CSS:before /:after伪元素中更改图像的高度吗?
  9. mysql 报500错误_java 项目开启mysql binlog参数后报500错误:
  10. LAMP架构(apache安装,apache工作原理介绍)
  11. LDA-math-认识Beta/Dirichlet分布
  12. Android手机证书安装
  13. 更改 matlab java 版本_64位 JDK 1.8 调用Matlab 2017b打包的jar
  14. 谷歌翻译退出中国市场?我们还有这个!
  15. 怎么将PPT中的视频文件保存下来
  16. WEB前端项目实战/酒仙网开发-李强强-专题视频课程
  17. cmake:pkg_check_modules
  18. iOS 核心动画的变换
  19. 互动媒体作业之艺术作品赏析
  20. Visual Stdio 中的error C2001: 常量中有换行符

热门文章

  1. 《花开半夏》--2 消息,魏如风(1)
  2. [Linux]expect介绍
  3. 超2TB缓存 Radware进军中国云安全市场
  4. JS——实现轮播图(完整功能)
  5. 天青色等烟雨,而我在等你
  6. 这几年进厂基本都是通过劳务
  7. 排列组合n选m,组合算法——0-1转换算法(巧妙算法)C++实现
  8. 腾讯云首推私有云存储,意欲抢占更多用户市场
  9. mysql5.7中文全文检索,让MySQL支持中文全文检索
  10. 计算机审计的优势,论计算机审计优势.docx