https://www.zybuluo.com/ysner/note/1300791

题面

贝西和她的朋友艾尔西正在玩这个简单的纸牌游戏。游戏有\(2N\)张牌,牌上的数字是\(1\)到\(2N\)。把这些牌分成两份,贝西有\(N\)张,艾尔西有另外\(N\)张。接下来她们进行\(N\)轮出牌,每次各出一张牌。一开始,谁出的牌上的数字大,谁就获得这一轮的胜利。贝西有一个特殊权利,她可以在任意一个时刻把原本数字大的获胜的规则改成数字小的获胜,这个改变将会一直持续到游戏结束。特别的,贝西可以从第一轮开始就使用小牌获胜的规则,也可以直到最后一轮都还不使用大牌获胜的规则。

现在,贝西已经知道了艾尔西出牌的顺序,她想知道她最多能够赢多少轮。

解析

显然前面每次选择比对方大却又尽可能小的牌,后面选择比对方小却又尽可能大的牌。

其实这就是田径赛马的原理。

支持删除和二分查找,显然\(set\)。

然后分别从前后预处理应该出什么牌,最后枚举中介点就行。

问题出在具体实现上。

后一个过程其实可以用一个存负值的\(set\)来搞。

而不是像蒟蒻一样用一个存正值的\(set\)然后\(TLE\)半天。

还有\(lower\_bound\)没找到结果会返回\(end()\)。

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<set>
#define ll long long
#define fp(i,a,b) for(int i=a;i<=b;++i)
#define fq(i,a,b) for(int i=a;i>=b;--i)
using namespace std;
const int N=5e5+100;
int n,a[N],q[N],h[N],ans;
bool vis[N];
set<int>S1,S2;
set<int>::iterator it;
int main()
{
scanf("%d",&n);
fp(i,1,n) scanf("%d",&a[i]),vis[a[i]]=1;
fp(i,1,2*n) if(!vis[i]) S1.insert(i),S2.insert(-i);
fp(i,1,n)
{
it=S1.lower_bound(a[i]);
if(it!=S1.end())
{
q[i]=q[i-1]+1;
S1.erase(it);
}
else q[i]=q[i-1],S1.erase(*S1.begin());
}
fq(i,n,1)
{
it=S2.lower_bound(-a[i]);
if(it!=S2.end())
{
h[i]=h[i+1]+1;
S2.erase(it);
}
else h[i]=h[i+1],S2.erase(*S2.begin());
}
fp(i,0,n) ans=max(ans,q[i]+h[i+1]);
printf("%d\n",ans);
return 0;
}

[USACO15DEC]High Card Low Card (Platinum)的更多相关文章

  1. 【题解】P3129高低卡(白金)High Card Low Card

    [题解][P3129 USACO15DEC]高低卡(白金)High Card Low Card (Platinum) 考虑贪心. 枚举在第几局改变规则,在改变规则之前,尽量出比它大的最小的牌,在改变规 ...

  2. 【BZOJ4391】[Usaco2015 dec]High Card Low Card(贪心)

    [BZOJ4391][Usaco2015 dec]High Card Low Card(贪心) 题面 BZOJ 题解 预处理前缀后缀的结果,中间找个地方合并就好了. #include<iostr ...

  3. [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 ...

  4. 【刷题】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 ...

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

  6. 【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 ...

  7. BZOJ4391 High Card Low Card [Usaco2015 dec](贪心+线段树/set库

    正解:贪心+线段树/set库 解题报告: 算辣直接甩链接qwq 恩这题就贪心?从前往后从后往前各推一次然后找一遍哪个地方最大就欧克了,正确性很容易证明 (这里有个,很妙的想法,就是,从后往前推从前往后 ...

  8. [bzoj4391] [Usaco2015 dec]High Card Low Card 贪心 线段树

    ---题面--- 题解: 观察到以决策点为分界线,以点数大的赢为比较方式的游戏都是它的前缀,反之以点数小的赢为比较方式的都是它的后缀,也就是答案是由两段答案拼凑起来的. 如果不考虑判断胜负的条件的变化 ...

  9. bzoj4391 [Usaco2015 dec]High Card Low Card

    传送门 分析 神奇的贪心,令f[i]表示前i个每次都出比对方稍微大一点的牌最多能赢几次 g[i]表示从i-n中每次出比对方稍微小一点的牌最多赢几次 ans=max(f[i]+g[i+1]) 0< ...

随机推荐

  1. Linux 关于umount

    场景:linux下挂载过去的代码目录编译失败.怀疑本地磁盘空间不足问题导致.解决方法:卸载重新挂载. 操作:卸载时报错: 解决方法: 1.umount, 老是提示:device is busy, 服务 ...

  2. 树莓派 -- i2c学习 续(1) DeviceTree Overlay实例化rtc

    上文中讨论了通过sysfs来实例化i2c设备 (rtc ds3231) https://blog.csdn.net/feiwatson/article/details/81048616 本文继续看看如 ...

  3. Symmetry

    Description The figure shown on the left is left-right symmetric as it is possible to fold the sheet ...

  4. maven项目运行tomcat7-maven-plugin:run时出现Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.util.Scanner(xjl456852原创)

    使用tomcat7-maven-plugin插件运行web项目时, 出现下面错误: [WARNING] Error injecting: org.sonatype.plexus.build.incre ...

  5. npm 发包

    前几天封装了公用的locaStorage组件,当然封装后需要发布npm官网,于是摸索了一番终于搞定了,总结下来希望对大家有所帮助 npm安装的package一般支持下面几大类: 本地包 url远程包 ...

  6. JavaEE JDBC 补充注意点

    JDBC补充注意点 @author ixenos 1.一个Statement对象可以用于多个不相关的命令和查询,但是一个Statement对象最多只能有一个打开的结果集,如果需要同时执行多个查询同时分 ...

  7. 关于iphone 微信浏览器编码问题

    这个问题最终没有完美的解决,给出的一个解决方法是返回一个html文档.

  8. SPOJ-BRCKTS (括号序列,线段树)

    维护括号序列 Replace(i): 将第i个位置的括号反向. Check:测试当前序列是否合法. 题解 将左括号定为1,右括号定为-1,所以只需要满足前缀和序列没有负数即可,即最小值 为正即可,第i ...

  9. 自己打断点走的struts流程&拦截器工作原理

    ①. 请求发送给 StrutsPrepareAndExecuteFilter ②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个 Struts2 请 求(Actio ...

  10. codevs 3498 小木棍

    3498 小木棍  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 乔治有一些同样长的小木棍,他把这些木棍随意 ...