贪心算法 田忌赛马问题
贪心算法 田忌赛马问题
这个题目贪心的本质在于:*田忌只在有把握赢的情况下拿出快马和王拼,否则用最慢的马比掉王的快马最大程度削弱王的战斗力
- 贪心策略:
1,如果田忌的最快马快于齐王的最快马,则两者比。
(因为若是田忌的别的马很可能就赢不了了,所以两者比)
2,如果田忌的最快马慢于齐王的最快马,则用田忌的最慢马和齐王的最快马比。
(由于所有的马都赢不了齐王的最快马,所以用损失最小的,拿最慢的和他比)
3,若相等,则比较田忌的最慢马和齐王的最慢马- 若田忌最慢马快于齐王最慢马,两者比。
(田忌的最慢马既然能赢一个就赢,而且齐王的最慢马肯定也得有个和他比,所以选最小的比他快得。) - 其他,则拿田忌的最慢马和齐王的最快马比(注意两马战力相等的情况,不能算田忌输)。
(反正所有的马都比田忌的最慢马快了,所以这匹马必输,选贡献最大的,干掉齐王的最快马)
- 若田忌最慢马快于齐王最慢马,两者比。
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <string>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <ctime>
#include <vector>
#include <fstream>
#include <list>
#include <iomanip>
#include <numeric>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf = 0x3f3f3f3f;
const int N=1000+5;
int a[N],b[N];
bool cmp(int x,int y){return x>y;
}
int main()
{int n;while(cin>>n&&n){for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n;i++){cin>>b[i];}sort(a,a+n,cmp);sort(b,b+n,cmp);int si=0,sj=si;int ei=n-1,ej=ei;int cnt=0;while(n--){if(a[si]>b[sj]){si++;sj++;cnt++;}else if(a[si]==b[sj]){if(a[ei]>b[ej]){cnt++;ei--;ej--;}else if(a[ei]<b[sj]){cnt--;ei--;sj++;}}else{ei--;sj++;cnt--;}}cout<<cnt*200<<endl;}return 0;
}
转载于:https://www.cnblogs.com/Janspiry/p/10809438.html
贪心算法 田忌赛马问题相关推荐
- 55天 - 贪心算法 - 田忌赛马问题 openjudge百炼 2287
//模板#include <iostream> #include <cstdio> #include <string> #include <algorithm ...
- 典型的贪心算法~ (田忌赛马 )
1. 田忌赛马 典型的贪心算法~~自己木有考虑到贪心的第二步导致wa了好多次 算法分析 Problem Description: 给出2N组数据,分别表示田忌和齐威王的N匹马的速度,没进行一场比赛( ...
- 田忌赛马贪心算法_贪心算法--田忌赛马问题
题目描述: 你一定听过田忌赛马的故事吧? 如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以得到200两银子,输一局,田忌就要输掉20 ...
- POJ2287 田忌赛马---贪心算法
田忌赛马 题目详见http://poj.org/problem?id=2287 田忌赛马大家都听过,可是如果不是上中下三等马,而是很多匹马,优劣有很多种分类,就不仅仅是321的问题了. 这个很明显就是 ...
- 用c语言实现田忌赛马(贪心算法)
用C语言实现田忌赛马(贪心算法) *首先,我们来回顾一下田忌赛马的题目. **题目描述] "田忌赛马"是历史上有名的揭示如何善用自己的长处去对付对手的短处,从而在竞技中获胜的事例. ...
- 田忌赛马贪心算法_贪心算法之田忌赛马
你一定听过田忌赛马的故事吧? 如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛.赢一局,田忌可以得到200两银子,输一局,田忌就要输掉20 ...
- 田忌赛马贪心算法_杭电oj 1052田忌赛马问题
问题描述 这是中国历史上的一个著名故事. "那是大约2300年前.田吉将军是齐国的一位高级官员.他喜欢与国王和其他人打赛马." "田和国王都拥有三匹不同级别的赛马,分别是 ...
- c语言贪心算法ppt,c语言(贪心算法).ppt
c语言(贪心算法).ppt ACM程序设计,杭州电子科技大学 刘春英 ,2018/12/23,2,最近几天,,你 了吗,AC,2018/12/23,3,每周一星(9),qfwr,2018/12/23, ...
- 算法设计与分析第3章 贪心算法
第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...
最新文章
- 【 C 】彻底学会字符串常量
- 无限极分类中递归查找一个树结构
- python能开发什么产品_三周学 Python ?不,三周做个产品
- 【机器学习】逻辑斯蒂回归原理
- iOS 中 #import同@class之间的区别
- [WCF编程]10.操作:请求/应答操作
- 自己编译操作系统,安装systemtap
- SAP-ABAP学习日常
- DirectoryEntry使用-实现域登录
- 【WPF】 免费图表控件的比较 (OxyPlot,LiveChart,ScottPlot,MsChart)
- 微信分享返回 错误码 -6 的情况!
- Android系统启动过程-uBoot+Kernel+Android
- 常用Nginx反向代理配置
- 利用div实现遮罩层效果
- 为了研究而玩:游戏分析的方法
- [论文翻译]-A Comprehensive Survey on Graph Neural Networks《图神经网络GNN综述》
- hadoop2.7.2下载
- 20190831每日一句 超越你的舒适区,突破自我,继续前进!
- TCP/IP参考模型-分层架构
- 浙大与北大计算机考研分数线,2017浙大考研复试分数线及相关问题