AGC002E题解
简要题意
桌上有 \(n\) 堆糖果,第 \(i\) 堆糖果有 \(a_i\) 个糖。两人在玩游戏,轮流进行,每次进行下列两个操作中的一个:
将当前最大的那堆糖果全部吃完;
将每堆糖果吃掉一个;
吃完的人输,假设两人足够聪明,问谁有必胜策略?
数据范围:\(1\leq n\leq10^5,1\le a_i\le10^9\) 。
思路
首先对于最大的一堆糖,如果两个人不去操作它那么他就会一直是最大的,而如果有人选择干掉它,那么剩下的最大值会顶替它。所以我们首先可以将 \(a_i\) 从大到小排序。但是对于第二种操作每次我们都要将全局减一不方便,但是每个数的相对大小不变,所以我们可以看成有一条线去截一些数,每次向上挪动。同样的,对于第一种操作我们也可以用相同的方法表示。所以我们可以将数列下标与数值看成一个有序二元组,由它们组成边界,把题目转化成在平面直角坐标系中有一个在 \((1,1)\) 的石子,现在两个人轮流移动,不能移动者获胜。于是就可以递推出每个格子的情况,但是数据范围不允许我们算出全部格子,所以需要稍微找一下规律。我们发现对角线上的格子的情况是一样的,所以可以暴力找到最远的对角线上的点,然后看它的上面与右边的获胜情况推出它自己是否获胜。
代码
bool cmp(int a, int b){return a > b;}
signed main(){
n = rd();
for(int i = 1; i <= n; ++i)a[i] = rd();
sort(a + 1, a + 1 + n, cmp); int pos;
for(pos = 1; pos <= n and a[pos] >= pos; ++pos); --pos;
bool o = (a[pos] - pos) & 1;
if(! o){
int i; for(i = pos + 1; a[i] == pos; ++i); --i;
o = (i - pos) & 1;
}
puts(o ? "First" : "Second");
return 0;
}
AGC002E题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- 记一个注意事项:从 forEach argument 返回的 Promise 被忽略
举例说明: const arr = [1, 2, 3] arr.forEach(async item => { // ... }) 上面的代码校验会出一个警告,从 forEach argumen ...
- 获取公众号openid,通过unionid 和小程序用户绑定起来
时间仓促,暂时记录一下,有问题请留言 背景:目前客户项目有两套系统.一套暂时定为A系统,另一套为B系统,两套系统下有不同的公众号,小程序. 需求:B系统为用户端系统,需要发送公众号模板消息,所以需要用 ...
- Flutter枚举
Flutter枚举 Enum Extension 在Dart2.7版本,Dart新增了扩展函数,使枚举相关的代码定义.调用更加简洁 通过扩展枚举定义方法 定义一个元素枚举 enum Element { ...
- 解决编译redis报错zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
编译redis时报错:zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory,执行: # sudo m ...
- MyBatisPlus中updateById与updateAllColumnById方法区别
实现 updateById方法在插入时,会根据实体类的每个属性进行非空判断,只有非空的属性所对应的字段才会出现在SQL语句中. updateAllColumnById方法在插入时,不管属性是否为空,属 ...
- Qt数据库应用20-csv文件转xls
一.前言 最近又多了个需求就是将csv格式的文件转xls,需求一个接着一个,还好都是真实的需求,而且都是有用的需求,并不是不靠谱的需求,不靠谱的需求就比如程序自动识别手机壳颜色自动换背景颜色或者边框颜 ...
- SpringBoot集成开源IM框架MobileIMSDK,实现即时通讯IM聊天功能
一.前言 MobileIMSDK 是什么? MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协 ...
- JMeter JDBC 请求实战宝典
<JMeter JDBC 请求实战宝典> 宝子们,今天咱就来唠唠 JMeter 里超厉害的 JDBC 请求,这玩意儿就像是数据库世界的神奇魔杖,能帮咱把数据库里的各种秘密(数据)都挖出来, ...
- AutoGen入门-让两个AI自行聊天完成任务
AutoGen介绍 AutoGen 是一个开源编程框架,用于构建 AI 代理并促进多个代理之间的合作以解决问题.AutoGen 旨在提供一个易于使用和灵活的框架,以加速代理型 AI 的开发和研究,就像 ...
- Python_图片对比问题汇总
问题一. raise OSError(f"cannot write mode {im.mode} as JPEG") from eOSError: cannot write mod ...