「题解」:$Game$
问题 B: $Game$
时间限制: 1 Sec 内存限制: 256 MB
题面
题面谢绝公开。
题解
对于最初加入的每一个元素开桶记录出现次数。
然后记录一个前p个元素最大值。
先由先手玩家取走一个最大值并判定最大值是否改变。
然后就可以先向集合中加入一个元素再由本轮取数的玩家取走最大的数字。
如果加入的元素大于最大值,由本轮取数的玩家直接取走。否则累加该数$sum$,取走一个最大值。
这样可以保证指针单调不升,减少指针移动次数。离散化可以进一步减少指针移动次数。
(然而我常数写丑了并不能A掉。多谢评测机放过在下。原封不动的代码多交几遍就A了)
#include<bits/stdc++.h>
#define rint register int
using namespace std;
inline void read(int &A)
{
A=;int B=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')B=-;ch=getchar();}
while(ch>=''&&ch<=''){A=(A<<)+(A<<)+ch-'';ch=getchar();}
A=A*B;
}
int n,k,a[],sum[],mx,lsh[];
long long ans1,ans2;
int main()
{
read(n),read(k);
for(rint i=;i<=n;++i)read(a[i]),lsh[i]=a[i];
sort(lsh+,lsh+n+);
rint cnt=unique(lsh+,lsh+n+)-lsh-;
for(rint i=;i<=n;++i)
a[i]=lower_bound(lsh+,lsh+cnt+,a[i])-lsh;
for(rint Round=,pi;Round<=k;++Round)
{
read(pi);ans1=ans2=;
for(rint i=;i<=pi;++i)
++sum[a[i]],mx=max(mx,a[i]);
ans1+=lsh[mx];--sum[mx];
while(!sum[mx]&&mx>)--mx;
for(rint i=;i<=n;++i)
{
if(i&)
{
if(pi<n)
{
++pi;
if(a[pi]>mx)ans1+=lsh[a[pi]];
else ans1+=lsh[mx],--sum[mx],++sum[a[pi]];
}
else ans1+=lsh[mx],--sum[mx];
}
else
{
if(pi<n)
{
++pi;
if(a[pi]>mx)ans2+=lsh[a[pi]];
else ans2+=lsh[mx],--sum[mx],++sum[a[pi]];
}
else ans2+=lsh[mx],--sum[mx];
}
if(i==n)break;
while(!sum[mx]&&mx>)--mx;
}
printf("%lld\n",ans1-ans2);
}
return ;
}
「题解」:$Game$的更多相关文章
- 「题解」「美团 CodeM 资格赛」跳格子
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...
- 「题解」「HNOI2013」切糕
文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...
- 「题解」JOIOI 王国
「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...
- 「题解报告」 P3167 [CQOI2014]通配符匹配
「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通 ...
- Linux 小知识翻译 - 「RAID」
最近术语「RAID」变得比较有名.「RAID」是指将多个HDD组合起来使用,从而提高存储可靠性的一种技术. 那么,关于 RAID 中的 「RAID 0」「RAID 1」「RAID 5」等各种「RAID ...
- 正则表达式从入门到放弃「Java」
正则表达式能做什么? 正则表达式可以用来搜索.编辑或处理文本. 「都懂它可以处理文本,可到底是怎么回事?」 正则表达式的定义 百度百科:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特 ...
- 「题解」:[loj2763][JOI2013]现代豪宅
问题 A: 现代豪宅 时间限制: 1 Sec 内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...
- Scala 学习(10)之「集合 」
数组 定长数组 Array:采用()访问,而不是[],下标从 0 开始. val array1 = new Array[String](5) //创建数组 println(array1) //返回数组 ...
- JavaScript OOP 之「创建对象」
工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...
- Facebook 发布「流程」
时不时就会在面试过程中碰到有候选人问 Facebook 是否采用 Scrum 之类的敏捷方法,偶尔也会有中国的朋友问及 Facebook 上线流程.我通常会简单说几句,然后说「如果你真感兴趣的话,去搜 ...
随机推荐
- 众所周知,static修饰的成员只实例化一次,而string类型每次赋值都会重新创建一个实例,那么用static修饰string呢?
string 类型每次实例化都会重新创建一个实例: 解释:string 类型重载了运算符 “=” ,每次 “=” 操作都是一次 “new”. static 修饰符的成员只实例化一次?? 解释:这个说法 ...
- PDO如何完成事务操作
起因 无意间翻看极客学院的APP,准备找一些教程看看.看到一篇PDO 安全处理与事务处理,一想对MySQL的事务处理仅仅停留在概念上(知道执行多条语句,其中一个失败了,就会回滚操作).但是把概念变成代 ...
- PROJECT | 四则运算UI设计 - 项目总结
[项目Github地址] https://github.com/oTPo/hw2 [项目规划] PSP表格 事项 预计时间(min) 实际花费时间(min) 需求分析 60 60 开发流程分析 30 ...
- Failed selinux 错误
再看他如何解决,步骤大概是: 1.开机之后进入linux启动选择界面,停在平时启动的哪那一行按E键,进入grub编辑页面. 2.按↓键光标往下移,在标签fi下面的内容里加上一个enforcing=0. ...
- 启动eclipse出现JVM terminated. Exit code=127 错误解决办法
https://blog.csdn.net/wpzsidis/article/details/72954387 进去第二次又错
- 关于CheckListBox触发ItemCheck事件的问题
开发时遇到一个有趣的问题,我们需要CheckListBox可以实现单选功能,因为默认是多选的,开始我写的代码如下: void cb_ItemCheck(object sender,ItemCheckE ...
- 牛客多校第九场 J Symmetrical Painting 计算几何/扫描线
题意: 平面上有几个宽度相同的矩形区域被涂黑了,让你找到一条横线横截若干个矩形,把这些黑色部分抠下来一部分使得它们以这条横线为对称轴,求能抠下来的最大面积. 题解: 在随着对称轴上移的过程中,必然有一 ...
- ionic:目录
ylbtech-ionic:目录 1.返回顶部 1. http://www.runoob.com/ionic/ionic-tutorial.html 2. 2.返回顶部 3.返回顶部 4.返回 ...
- Typora--终于找到一个能够解决将csdn文章同步到hexo的完美编辑器(解决csdn图片防盗链导致无法直接复制文章的问题)。
文章目录 需求 背景 新宠 告诉我,我的名字叫什么?大声点我听不见~ 页面 神奇之处 看得见的优点 如何设置项目根目录 如何显示图片? 于是最终操作流程 个人博客:https://mmmmmm.me ...
- Python3 From Zero——{最初的意识:006~数据编码与处理}
一.读写CSV数据: #!/usr/bin/env python3 #-*- coding=utf8 -*- import csv with open('kxtx.csv', 'rt') as f: ...