High Card Low Card G(田忌赛马进阶!!)
\(首先一定要明确一个观点,不然会完全没有思路\)
\(\bullet\)\(由于前半段大的更优,后半段小的更优。\)
\(\bullet\)\(所以,\)Bessie\(一定会在前(n/2)轮比拼中打出自己最大的(n/2)张牌。\)
\(\bullet\)\(那么,因为出的牌确定了,所以我们把比拼分为前半段和后半段。\)
\(前半段(大的牌赢)\)
\(\bullet\)因为\(Bessie可以根据Elsie的出牌顺序调整自己的出牌顺序,所以Elsie前半段怎么出牌都是一样的\)
\(那不妨把 Elsie的前(n/2)张牌从大到小排序\)
\(那我们把Bessie的最大的(n/2)张牌从大到小排序\)
策略
\(\bullet\)\(Bessie最大牌能赢Elsie的最大牌,那就赢。(能赢为什么不赢?)\)
\(\bullet\)\(Bessie最大牌输给Elsie的最大牌,那一定会输,不妨用最小的牌输给他。\)
后半段也是相同的策略。
扩展
\(但是田忌赛马中,规则更加复杂。\)
\(赢了赚钱,输了亏钱,平局不赚不亏\)
\(所以在上面策略的基础上多了一种情况,要是最大马相同怎么办?\)
\(\bullet\)若田忌的最慢马快与齐王的最慢马,两者比(能赢就赢呗)
\(\bullet\)其他,用田忌的最慢马与齐王的最快马比(贡献最大)
#include <bits/stdc++.h>
using namespace std;
int n;
int a[25009],c[25009],b[100009];
int q[25009],h[25009];
bool com(int a,int b){
return a>b;
}
int main()
{
cin>>n;
int ans=0;
for(int i=1;i<=n/2;i++)
{
cin>>a[i];
b[a[i]]=1;
}
for(int i=1;i<=n/2;i++)
{
cin>>c[i];
b[c[i]]=1;
}
sort(a+1,a+1+n/2,com);//前半段大到小
sort(c+1,c+1+n/2);//后半段小到大
for(int i=2*n;i>=1;i--)
{
if(q[0]<n/2&&b[i]==0)
q[++q[0]]=i;
else if(q[0]>=n/2&&b[i]==0)
h[++h[0]]=i;
}
sort(q+1,q+1+n/2,com);//前半段大到小
sort(h+1,h+1+n/2);//后半段小到打
int p1=1,p2=1,w1=n/2,w2=n/2;
while(p1<=w1)
{
if(q[p1]>a[p2])
ans++,p1++,p2++;
else
w1--,p2++;
}
p1=1,p2=1,w1=n/2,w2=n/2;
while(p1<=w1)
{
if(h[p1]<c[p2])
ans++,p1++,p2++;
else
w1--,p2++;
}
cout<<ans;
}
High Card Low Card G(田忌赛马进阶!!)的更多相关文章
- 【题解】P3129高低卡(白金)High Card Low Card
[题解][P3129 USACO15DEC]高低卡(白金)High Card Low Card (Platinum) 考虑贪心. 枚举在第几局改变规则,在改变规则之前,尽量出比它大的最小的牌,在改变规 ...
- 【BZOJ4391】[Usaco2015 dec]High Card Low Card(贪心)
[BZOJ4391][Usaco2015 dec]High Card Low Card(贪心) 题面 BZOJ 题解 预处理前缀后缀的结果,中间找个地方合并就好了. #include<iostr ...
- 【dp 贪心】bzoj4391: [Usaco2015 dec]High Card Low Card
巧妙的贪心 Description Bessie the cow is a huge fan of card games, which is quite surprising, given her l ...
- 【刷题】BZOJ 4391 [Usaco2015 dec]High Card Low Card
Description Bessie the cow is a huge fan of card games, which is quite surprising, given her lack of ...
- [BZOJ4391][Usaco2015 dec]High Card Low Card dp+set+贪心
Description Bessie the cow is a huge fan of card games, which is quite surprising, given her lack of ...
- [USACO15DEC]高低卡(白金)High Card Low Card (Platinum)
题目描述 Bessie the cow is a hu e fan of card games, which is quite surprising, given her lack of opposa ...
- BZOJ4391 High Card Low Card [Usaco2015 dec](贪心+线段树/set库
正解:贪心+线段树/set库 解题报告: 算辣直接甩链接qwq 恩这题就贪心?从前往后从后往前各推一次然后找一遍哪个地方最大就欧克了,正确性很容易证明 (这里有个,很妙的想法,就是,从后往前推从前往后 ...
- [bzoj4391] [Usaco2015 dec]High Card Low Card 贪心 线段树
---题面--- 题解: 观察到以决策点为分界线,以点数大的赢为比较方式的游戏都是它的前缀,反之以点数小的赢为比较方式的都是它的后缀,也就是答案是由两段答案拼凑起来的. 如果不考虑判断胜负的条件的变化 ...
- bzoj4391 [Usaco2015 dec]High Card Low Card
传送门 分析 神奇的贪心,令f[i]表示前i个每次都出比对方稍微大一点的牌最多能赢几次 g[i]表示从i-n中每次出比对方稍微小一点的牌最多赢几次 ans=max(f[i]+g[i+1]) 0< ...
随机推荐
- 使用spring连接mysql数据库出错
最近在学习spring框架,但是在学到JdbcTemplate时连接数据库一直报错,百度谷歌各种查找都能没有解决问题,简直要癫狂,报错信息如下: org.springframework.jdbc.Ca ...
- ffmpeg 交叉编译 版本4.0.4
touch run.sh chmod 755 run.sh ./run.sh run.sh #!/bin/sh ./configure \ --arch=aarch64 \ --cpu=armv8-a ...
- mysql的事务四个特性以及事务的四个隔离级别
一.事务四大属性 分别是原子性.一致性.隔离性.持久性. 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库, ...
- Tomcat5启动流程与配置详解
标签:配置 tomcat 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto. ...
- DataGridView行号发生变化 使用的事件
DataGridView并没有这么专门为行号发生变化时触发的事件,我们只能用SelectionChanged和CurrentCellChanged做些设置后实现. 1.使用SelectionChang ...
- 你知道python入门,是学到什么程度才算是吗?
1.入门的标准是什么? 这是很多初学者都关注的问题,但又是一个很难回答的问题,问题的核心是采取什么标准来衡量一个人是否已经入门. 以知识量的多少来衡量是不是可行呢?有些人走马观花一般学了很多pytho ...
- F - Select Half dp
题目大意:从n个数里边选n/2个数,问和最大是多少. 题解:这是一个比较有意思的DP,定义状态dp[i][1],表示选了第i个数的最优状态,dp[i][0]表示没有选第i个数的最优状态. 状态是如何转 ...
- X - Ehab and Path-etic MEXs CodeForces - 1325C
MMP,差一点就做对了. 题目大意:给你一个树,对这个树的边进行编号,编号要求从0到n-1,不可重复,要求MEX(U,V)尽可能的小, MEX(x,y)的定义:从x到y的简单路径上,没有出现的最小编号 ...
- 详解 Set接口
(请关注 本人"集合"总集篇博文--<详解 Collection接口>) 在Collection接口的子接口中,最重要的,也是最常见的两个-- List接口 和 Set ...
- .NetCore对接各大财务软件凭证API——金蝶系列(1)
哈喽,又和大家见面了,虽然看文章的小伙伴不多,但是我相信总有一天,自己写的这些文章或多或少会对其他人有些帮助,让他们在相关的业务开发下能少走些弯路,那我的目的就达到了,好了,今天就正式开始我们的系列了 ...