Tian Ji -- The Horse Racing HDU - 1052
Tian Ji -- The Horse Racing HDU - 1052
(有平局的田忌赛马,田忌赢一次得200块,输一次输掉200块,平局不得钱不输钱,要使得田忌得到最多(如果只能输就输的最少))
首先,实际是要求两人马的配对关系。那么不妨设齐王是按从快到慢的顺序出马的。因此先将齐王的马排序。
关键在于田忌最慢的马,能先赢就先赢,不能赢就去消耗齐王最快的马,
然后再来考虑最快的马,能先赢就先赢,不能赢说明现在田忌和齐王最快的
马和最慢的马都相等,再来考虑把田忌最慢的马和齐王最快的马比较。
可以发现,如果把过程当做田忌每次根据齐王出的马出一匹自己的马,那么他的的最佳策略一定是要么出剩下最快的马,要么出最慢的。(要么赢,要么消耗)
因此,把田忌的马也排一下序。之后定义ans[i][j]为齐王出i匹较强的,田忌出j匹较强的,i-j匹较弱的时能得到的最大收益。定义get(i,j)表示田忌的第i弱的马与齐王第j弱的马比,田忌得到的收益。那么ans[i][j]=max(ans[i-1][j]+get(i-j,n-i+1),ans[i-1][j-1]+get(n-j+1,n-i+1))。
小细节:
齐王出第i强的(第n-i+1弱的)时:
如果田忌出弱的,那么田忌已经出了j匹较强的,这一次出的是第i-j匹弱的
如果田忌出强的,那么这一次出的是第j强的(第n-j+1弱的)
对于ans[i][0]和ans[i][i]要特判,不然会越界访问。
这题有$O(nlogn)$(除去排序就是$O(n)$)的完全贪心做法。(仅做记录)
曾经错误:
1.把get里面的t1和t2打成全是t1。
2.进行动态规划的循环中前后两行特判写错,写成
ans[i][0]=ans[i-1][0]+get(i-j,n-i+1)
ans[i][i]=ans[i-1][i-1]+get(n-j+1,n-i+1)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int ans[][];
int t1[],t2[];
int n,anss;
int get(int a,int b)
{
if(t1[a]>t2[b]) return ;
if(t1[a]==t2[b]) return ;
return -;
}
int main()
{
int i,j;
scanf("%d",&n);
while(n!=)
{
anss=-0x3f3f3f3f;
memset(ans,,sizeof(ans));
for(i=;i<=n;i++)
scanf("%d",&t1[i]);
for(i=;i<=n;i++)
scanf("%d",&t2[i]);
sort(t1+,t1+n+);
sort(t2+,t2+n+);
for(i=;i<=n;i++)
{
ans[i][]=ans[i-][]+get(i,n-i+);
for(j=;j<i;j++)
ans[i][j]=max(ans[i-][j]+get(i-j,n-i+),ans[i-][j-]+get(n-j+,n-i+));
ans[i][i]=ans[i-][i-]+get(n-i+,n-i+);
}
for(i=;i<=n;i++)
anss=max(anss,ans[n][i]);
printf("%d\n",anss);
scanf("%d",&n);
}
return ;
}
Tian Ji -- The Horse Racing HDU - 1052的更多相关文章
- HDU 1052 Tian Ji -- The Horse Racing (贪心)(转载有修改)
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- Hdu 1052 Tian Ji -- The Horse Racing
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU 1052 Tian Ji -- The Horse Racing【贪心在动态规划中的运用】
算法分析: 这个问题很显然可以转化成一个二分图最佳匹配的问题.把田忌的马放左边,把齐王的马放右边.田忌的马A和齐王的B之间,如果田忌的马胜,则连一条权为200的边:如果平局,则连一条权为0的边:如果输 ...
- hdu 1052 Tian Ji -- The Horse Racing (田忌赛马)
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU 1052:Tian Ji -- The Horse Racing(贪心)
Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- 杭州电 1052 Tian Ji -- The Horse Racing(贪婪)
http://acm.hdu.edu.cn/showproblem.php? pid=1052 Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS ...
- hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】
思路:先按从小到大排序, 然后从最快的開始比(如果i, j 是最慢的一端, flag1, flag2是最快的一端 ),田的最快的大于king的 则比較,如果等于然后推断,有三种情况: 一:大于则比較, ...
- hdu1052 Tian Ji -- The Horse Racing 馋
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1052">http://acm.hdu.edu.cn/showproblem.php ...
- Tian Ji -- The Horse Racing
Tian Ji -- The Horse Racing Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Jav ...
随机推荐
- GO语言 --socket.io
socket.io是对websocket的封装以及扩展, 可以跨平台使用, 具体可看官网.. GO语言实现: package main import ( "github.com/googol ...
- 转: 将Eclipse代码导入到AndroidStudio的两种方式
评注: 讲解的非常之详细 转自: http://www.cnblogs.com/ct2011/p/4183553.html 说到使用AndroidStudio,除了新建的项目,我们都会面临的问题 ...
- CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
介绍 The Elastic Stack - 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案.它可以从任何来源,任 ...
- VM Workstation的Unity Mode有什么用
正常情况下,如果我启动了一个VM Workstaion的虚拟机,比如是一个Linux系统,并且没运行任何软件,进入Unity mode之后,我真实系统的左下角会有一个虚拟机的图标 点击这个图标可以打开 ...
- Policy-based design设计模式
书在4年前看过.今天重温一下: 一直觉得这是最好的设计模式,大牛Andrei Alexandrescu 专门写了书,可见他的重要性 http://en.wikipedia.org/wiki/Polic ...
- 我所写的CNN框架 VS caffe
我所写的CNN框架 VS caffe 一个月前.自己模仿caffe实现了一个卷积神经网络的框架. 同样点 1无缝支持CPU和GPU模式,GPU模式使用cuda实现. 不同点 1我的CNN不依赖与不论什 ...
- 聚合类新闻client产品功能点详情分析
产品功能点 功能 今日头条 百度新闻 鲜果 ZAKER 媒体订阅 × √ ★ ★ 个性化内容推荐 ★ √ × × 个性化订阅(RSS) × × ★ × 视频新闻 × × × × 评论盖楼 √ √ √ ...
- ZOJ 3691 Flower(最大流+二分)
Flower Time Limit: 8 Seconds Memory Limit: 65536 KB Special Judge Gao and his girlfriend's ...
- [办公应用]让WORD自动显示到四级目录
一般情况下,word的目录默认显示到三级目录.如果需要显示到四级目录,你会怎么操作呢? 只要按下图所示,单击“插入”-“引用”-“索引和目录” 然后单击“目录”选项卡,将“显示级别”处的3改为4即可. ...
- Chapter1-data access reloaded:Entity Framework(上)
本章包括以下几个部分: 1.DataSet and classic ADO.NET approach2.Object model approach3.Object/relational mismatc ...