http://poj.org/problem?id=2287

田忌赛马

题意:给田忌 和 国王 各自n匹马

比赛n轮 每匹马只能比一场  赢的一方得200 平得0

田忌最多赢多少

思路

贪心:局部最优------》》全局最优

先排序 大到小

然后ti  ki 分别指向田忌 国王当前(即还没比)最大速度那匹马

tj  kj   各自。。。。最小速度

1)田最快 > 国王最快 -----------田肯定赢

注意:是否拿田最快  打  国王最快    我当时认为最贪心应该看看后面还有没有也能 打过  国王最快的  有就拿那匹

分析:田  A B C D

国王 K F J

现在会不会存在一种情况  B能打过K 但不能打过F  而A能打过F? 如果存在那就证明我上面的猜想正确 不能直接用田最快 打 王最快

A >= B   K>=F   如果B打过K 必然B就能打过F 所以不存在

所以答案应该 田最快 打 王最快 

2)田最快 < 国王最快 -----------田肯定输

直接拿田当前最慢的 和  王最快的比

3)田最快 ==国王最快

3.1)  如果田最慢  > 王最慢  ----田赢

田最慢  打 王最慢

3.2)  如果田最慢  == 王最慢  ----田可能输 可能平

既然赢不了 那就用田最慢  耗掉 王的最快吧

输:田最慢   < 王最快

平:田最慢   == 王最快(可能当前只剩1匹 最快最慢都是一匹 那不就有可能相等了)

#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<map>
#include<vector>
#include<set>
#include<queue>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<functional>using namespace std;
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
#define LL long long
#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1
//#define mp make_pair
#define pb push_back
#define ULL unsigned LL
#define mem(a, b) memset(a, b, sizeof(a))
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
//#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);const int maxn = 1000 + 100;
int tian[maxn], king[maxn];
int cmp(int a, int b){return a > b;
}int main(){int n;while (~scanf("%d", &n) && n){for (int i = 1; i <= n; ++i) cin >> tian[i];for (int i = 1; i <= n; ++i) cin >> king[i];sort(tian + 1, tian + n + 1, cmp);sort(king + 1, king + n + 1, cmp);int ans = 0;int cnt = 0;int ti, tj, ki, kj;ti = ki = 1, tj = kj = n;while (/*ti <= tj*/cnt < n){cnt++;//田最快  > 王最快//田赢200if (tian[ti] > king[ki]){ans += 200;ti++, ki++;}//田最快  == 王最快else if (tian[ti] == king[ki]){//田最慢  > 王最慢//田赢200if (tian[tj] > king[kj]){ans += 200;tj--, kj--;}//田最慢  <= 王最慢  田慢 打  王快 //田肯定输else{//为什么是田最慢 < 王最快  if (tian[tj] < king[ki])ans -= 200;tj--, ki++;}田最慢  < 王最慢  田慢 打  王快  田输//else if (tian[tj] < king[kj]){//   tj--,ki++;//  ans -= 200;//}平局//else {// tj--,ki++;//}}//田快  < 王快  拿田慢 比  王快//田输else{tj--, ki++;ans -= 200;}}printf("%d\n", ans);}
}

田忌赛马 贪心 注意细节相关推荐

  1. 田忌赛马贪心算法_田忌赛马问题——贪心算法

    关于输入 输入包含多组测试数据. 每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马.接下来一行是n个整数,表示田忌的马的速度,下一行也是n个整数,表示齐 ...

  2. 田忌赛马贪心算法_贪心算法--田忌赛马问题

    题目描述: 你一定听过田忌赛马的故事吧? 如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以得到200两银子,输一局,田忌就要输掉20 ...

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

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

  4. 田忌赛马-贪心算法实现

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

  5. POJ2287 田忌赛马---贪心算法

    田忌赛马 题目详见http://poj.org/problem?id=2287 田忌赛马大家都听过,可是如果不是上中下三等马,而是很多匹马,优劣有很多种分类,就不仅仅是321的问题了. 这个很明显就是 ...

  6. 洛谷P1650:田忌赛马 ← 贪心算法

    [题目来源] https://www.luogu.com.cn/problem/P1650 [题目描述] 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马. ...

  7. 田忌赛马贪心算法_贪心算法之田忌赛马

    你一定听过田忌赛马的故事吧?       如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以得到200两银子,输一局,田忌就要输掉20 ...

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

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

  9. HDU1052 田忌赛马 贪心

    一开始就知道是贪心,读入a[n],b[n],排序使数组降序排列,表示马从强到弱. 对于齐威王的每一匹马: 比得过就比 比不过就用我最弱的马跟对手最强的马比 如果马都是互异的,即a[n]中无重复数字,b ...

最新文章

  1. ROS发行版列表完整版
  2. 操作系统学习:Linux0.12初始化详细流程-进程退出与系统进入怠速
  3. python+selenium七:下拉框、选项框、select用法
  4. 利用python爬虫(案例7)--X讯招聘的小职位们
  5. 数据结构—链表-双链表
  6. leetcode hot 1-2
  7. oracle实现累加,oracle用sum函数实现累加
  8. [学习笔记] Cordova+AmazeUI+React 做个通讯录 - 联系人列表(2)
  9. 2015计算机软考试题及答案,2015年计算机软考网络工程师练习试题及答案
  10. 前端规范——前后端接口规范
  11. php 表格内边距,CSS 内边距
  12. ① 如何优雅快乐打出漂亮LaTeX数学公式——小乐数学zzllrr Mather公式编辑器教程
  13. 文科生学计算机能考研吗,求推荐文科生可以跨考计算机的名校
  14. 把VBA转换成JAVA_请教,我用Excel中生成了Java代码,用VBA生成Jav
  15. linux module load, show, 包管理,找到包的路径
  16. Redis基础(二)—— 基本命令与数据类型
  17. 桌面图标带有蓝色问号解决办法
  18. STM8L052C6 低功耗+LCD显示 经验分享
  19. 如何查看CentOS7的版本信息
  20. mysql打卡学习5常见函数

热门文章

  1. apple iMac一体机 装双系统 实战! (Apple +Win 7 64bit)Good
  2. HEVC新特点一览(3)
  3. fpga串口打印计数值作业
  4. 饮水总要思源,才能走得更远
  5. Loj #2585. 「APIO2018」新家
  6. Spark 内存管理堆内和堆外内存规划_大数据培训
  7. 从零构建区块链量化交易平台课程总结-思维模型和方法论提炼
  8. MySQL从删库到跑路(7):连接查询,用联系的观点看女神与渣男
  9. android设备类型,android根据屏幕尺寸区分设备类型,phone或者pad - yuanyuan
  10. Linux-软件安装管理