Description

奶牛贝茜是卡牌游戏的狂热爱好者, 但是令人吃惊的, 她缺乏对手。 不幸的是, 任何牧 群里的其他牛都不是好对手。
他们实在是太差了 , 实际上, 他们玩卡牌游戏时会遵循一种完全可以被预测的模式。 然
而对于贝茜来说, 找到赢的方法仍然是一个挑战。
贝茜和他的朋友埃尔西最近在玩一个简单的卡牌游戏, 总共有 2N 张卡牌, 上面的数字
为 1−2N, 贝茜分得 N 张, 埃尔西分得 N 张。
他们玩 N 局游戏, 每局游戏双方都出一张牌。
最初, 数字大的得 1 分, 输了不得分。 但是, 贝茜可以在游戏的某个时刻改变游戏规则
( 有且仅有一次), 对于剩下的游戏, 数字小的得 1 分, 输了不得分。 贝茜可以不做出这个
选择, 整局都是“ 高分卡片赢”, 或者一开始就改变规则“低分卡片赢”。
给出贝茜预测的埃尔西将要使用的 N 张卡片, 求出贝茜的得分最大值。

Input

第一行一个整数 n
接下来 n 行每行一个整数 x, 表示埃尔西拥有的卡片数字很简单就能推测出贝茜拥有的
卡片。

Output

只有一行一个整数 max,为得分最大值。

Sample Input

4
1
8
4
3

Sample Output

3

Hint

【 数据范围】
对于 10%的数据, n<=100
对于 30%的数据, n<=2000
对于 100%的数据,n<=50000

贪心题:

  可以考虑我们假如先不考虑有一次改变的机会每次要比对手出的大,那么就是跑一次田忌赛马(对手的出牌顺序是一定的,而我们可以随便出牌),然后输出答案就可吧。也就是说,对于我们最大的牌,我们必须去用我们最大的牌去尽量大对方的比我们这张拍小一点的牌,然后如果这张牌没有办法打过,那么我们必须要用我们最弱的拍去打敌方最大的牌。

  然后我们考虑可以改变规则的情况,显然我们可以把大的获胜,对于每个敌人每个位置的答案记录下来,然后我们再反过来做一田忌赛马(牌小的胜利),因为去参加第一次赛马的马一定是这个序列里的前k个,而第二次的马一定是后边的马,所以马不可能重复被选。因此我们枚举断点,将两场比赛结果相加的最大值就是答案。

  实现的话可以用set,或者自己用数组,二分也可以。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#include <set>
#define MAXN 50100
using namespace std;
set<int> first,second;
set<int> :: iterator f,s;
int a[MAXN],b[MAXN],cnt[MAXN];
int n,m,num=;
bool have[MAXN*];
int main()
{
scanf("%d",&n);m=n*;
for(int i=;i<=n;i++){
int x;scanf("%d",&x);
b[i]=x,have[x]=;
}
for(int i=;i<=m;i++){
if(have[i]) continue;
a[++num]=i;
first.insert(i);
second.insert(i);
}
for(int i=n;i>=;i--){
cnt[i]=cnt[i+];
f=first.lower_bound(b[i]);
if(f!=first.begin()) cnt[i]++,first.erase(--f);
else first.erase(--first.end());
}
int ans=cnt[],hh=;
for(int i=;i<=n;i++){
s=second.lower_bound(b[i]);
if(s!=second.end()) hh++,second.erase(s);
ans=max(ans,cnt[i+]+hh);
}
printf("%d",ans);
return ;
}

BZOJ 4392 卡牌游戏的更多相关文章

  1. bzoj千题计划202:bzoj3191: [JLOI2013]卡牌游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=3191 每个人获胜的概率只与其在排列中与庄家的相对位置有关 dp[i][j] 还剩i个人时,从庄家数第 ...

  2. BZOJ 4205: 卡牌配对

    4205: 卡牌配对 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 173  Solved: 76[Submit][Status][Discuss] ...

  3. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  4. BZOJ_3191_[JLOI2013]卡牌游戏_概率DP

    BZOJ_3191_[JLOI2013]卡牌游戏_概率DP Description   N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随 ...

  5. 洛谷 P2059 [JLOI2013]卡牌游戏 解题报告

    P2059 [JLOI2013]卡牌游戏 题意 有\(n\)个人玩约瑟夫游戏,有\(m\)张卡,每张卡上有一个正整数,每次庄家有放回的抽一张卡,干掉从庄家起顺时针的第\(k\)个人(计算庄家),干掉的 ...

  6. 【BZOJ3191】【JLOI2013】卡牌游戏 [DP]

    卡牌游戏 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description   N个人坐成一圈玩游戏.一开始我 ...

  7. TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变

    转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与< ...

  8. [JLOI2013]卡牌游戏 概率DP

    [JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i ...

  9. [省选联考 2021 A/B 卷] 卡牌游戏

    垃圾福建垫底选手来看看这题. 大家怎么都写带 \(log\) 的. 我来说一个线性做法好了. 那么我们考虑枚举 \(k\) 作为翻转完的最小值. 那么构造出一个满足条件的操作,我们在 \(a_i\) ...

随机推荐

  1. Python远程连接MySQL数据库

    使用Python连接数据库首先需要安装Python的数据库驱动. 我的本地只装了Python,并没有装MySQL,当我使用命令: sudo pip install mysql-python 安装驱动( ...

  2. 运维核心基础知识之——MD5sum校验文件

    如何使用MD5sum工具校验你的文件. 演示过程截图: 先给文件创建一个md5值 md5sum oldboy.txt 然后将md5sum生成的md5值写入到一个文件police.log md5sum ...

  3. Java 13 明天发布,最新最全新特性解读

    2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,新的发布周期严格遵循时间点,将在每年的3月份和9月份发布. 目前,JDK官网上已经可以看到JDK 13的进展,最新版的JDK ...

  4. 开发利器JRebel部署SpringBoot项目

    不要以为年纪轻轻就跌倒了人生谷底,未来还有更大的下降空间等着你. idea下载和安装JRebel 激活JRebel 访问https://my.jrebel.com/ 使用facebook或twitte ...

  5. Java,Python,前端,Linux,公众号等5T编程资源整理免费下载

    场景 我的CSDN: https://blog.csdn.net/BADAO_LIUMANG_QIZHI 实现 马士兵Java学习视频 方立勋JavaWeb 尚硅谷Python核心基础 数据分析 机器 ...

  6. IO流——File类(文件流类)

    java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...

  7. 52 (OC)* 苹果手机各种尺寸详细表以及iPhoneX、iPhoneXS、iPhoneXR、iPhoneXSMax屏幕适配

     iPhone设备 物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的. 代数 设备 操作系统 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子   iPhone ...

  8. log4j日志不输出的问题

    今天服务器上报错,想先去看一下日志进行排查,结果发现日志很久都没有输出过了.从上午排查到下午,刚刚解决,因此记录一下,但现在也只是知其然,并不知其所以然,所以如果大家有什么想法请在下方评论. 先说一下 ...

  9. AppScan工具使用-实战一

    本文首发于简书https://www.jianshu.com/p/639cf894838e 工具已经安装完成,废话不多说,直接拿手上的项目使用一下. 1.打开工具,点击文件-新建 2.打开新建扫描 3 ...

  10. 谁是狸猫谁是太子?--戏说java构造器

    故事背景 <狸猫换太子>在我国民间文学中很出名,故事剧情大致如下:北宋第三位皇帝宋真宗赵恒年长无子,他的两个妃子刘妃与李妃同时怀了身孕.真宗召见二人,各赐信物,并声明哪个生了儿子就立谁为皇 ...