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的更多相关文章

  1. 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 ...

  2. 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 ...

  3. HDU 1052 Tian Ji -- The Horse Racing【贪心在动态规划中的运用】

    算法分析: 这个问题很显然可以转化成一个二分图最佳匹配的问题.把田忌的马放左边,把齐王的马放右边.田忌的马A和齐王的B之间,如果田忌的马胜,则连一条权为200的边:如果平局,则连一条权为0的边:如果输 ...

  4. 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 ...

  5. 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 ...

  6. 杭州电 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 ...

  7. hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】

    思路:先按从小到大排序, 然后从最快的開始比(如果i, j 是最慢的一端, flag1, flag2是最快的一端 ),田的最快的大于king的 则比較,如果等于然后推断,有三种情况: 一:大于则比較, ...

  8. hdu1052 Tian Ji -- The Horse Racing 馋

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1052">http://acm.hdu.edu.cn/showproblem.php ...

  9. Tian Ji -- The Horse Racing

    Tian Ji -- The Horse Racing Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Jav ...

随机推荐

  1. WebLogic中"域"的概念

    WebLogic 版权声明:本文为博主原创文章,未经博主允许不得转载. WebLogic Server中的域是逻辑上相关的一组 WebLogic Server 资源,可以作为一个单元进行管理.一个域中 ...

  2. HDU 4115 Eliminate the Conflict(2-sat)

    HDU 4115 Eliminate the Conflict pid=4115">题目链接 题意:Alice和Bob这对狗男女在玩剪刀石头布.已知Bob每轮要出什么,然后Bob给Al ...

  3. Dom对象的经常用法

    Dom对象的经常用法: (1)getElementById() 查询给定ID属性值的元素,返回该元素的元素节点 1.  查询给定ID属性值的元素,返回该元素的元素节点.也称为元素对象.        ...

  4. [Zlib]_[0基础]_[使用zlib库压缩文件]

    场景: 1. WIndows上没找到系统提供的win32 api来生成zip压缩文件, 有知道的大牛麻烦留个言. 2. zlib比較经常使用,编译也方便,使用它来做压缩吧. MacOSX平台默认支持z ...

  5. 微信小程序实战之 pay(支付页面)

    项目目录: 逻辑层: pay.js // pages/pay/pay.js Page({ /** * 页面的初始数据 */ data: { resultType: "", resu ...

  6. ubuntu下安装pycharm的方法

    linux下安装pycharm是比较麻烦的. 安装pycharm之前要安装好JDK8,依次执行如下的命令: sudo add-apt-repository ppa:webupd8team/java s ...

  7. HDU 2896 病毒侵袭 (AC自己主动机)

    pid=2896">http://acm.hdu.edu.cn/showproblem.php?pid=2896 病毒侵袭 Time Limit: 2000/1000 MS (Java ...

  8. 小胖说事35-----Terminating app due to uncaught exception &#39;CALayerInvalidGeometry&#39;, reason: &#39;CALayer posi

    2011-06-11 15:19:17.167 ***[930:707] *** Terminating app due to uncaught exception 'CALayerInvalidGe ...

  9. Windows驱动程序开发基础(四)驱动的编译调试和安装

    Windows驱动程序开发基础,转载标明出处:http://blog.csdn.net/ikerpeng/article/details/38793995 以下说一下开发出来驱动程序以后怎样编译.一般 ...

  10. spring实战笔记6---springMVC的请求过程

    之前有一次在面试其中被问到了这个问题.当时说得不是非常清楚,有些细节的地方想不起来了.所以在这里从新回想和总结一下SpringMVC的起步.请求的运行过程. 在SpringMVC其中.跟请求(Requ ...