@atcoder - AGC002E@ Candy Piles
@description@
给定 N 堆糖果,第 i 堆包含 ai 个糖果。
现在两人进行博弈。有两种操作选择:
(1)吃掉包含最多糖果的糖果堆。
(2)每堆吃掉一颗。
吃掉最后一颗糖的人判输,问谁必胜?
@solution@
将 n 个数从大到小排好序,看成一个 n 列的直方图,第 i 列包含 a'i 个格子。
举个例子:对于 5 5 3 2 1 1,可以建立直方图如下:
o o
o o
o o o
o o o o
o o o o o o
那么相当于有一个棋子从 (1, 1) 出发,玩家可以将棋子右/上移一步,走出边界的判输。
然后经过万能的打表找规律,我们可以发现如果 (x, y) 和 (x + 1, y + 1) 同时存在,则两者的 np 状态相同。
不过这个结论利用反证法倒是不难证就是了。。。
于是我们可以先移动到一个点 (x, y) 使得 (x + 1, y + 1) 不存在,注意到从 (x, y) 只能一路向上或右,两种情况都判一判即可。
@accepted code@
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 100000;
bool cmp(int x, int y) {return x > y;}
int a[MAXN + 5], N;
int main() {
scanf("%d", &N);
for(int i=1;i<=N;i++)
scanf("%d", &a[i]);
sort(a + 1, a + N + 1, cmp);
for(int i=1;i<=N;i++) {
if( a[i + 1] < i + 1 ) {
int p = (a[i] - i) % 2, q;
for(int j=i;j<=N+1;j++)
if( a[j] < i ) {
q = (j - i - 1) % 2;
break;
}
puts(p & 1 || q & 1 ? "First" : "Second");
break;
}
}
}
@details@
这是什么神仙操作.jpg。
我怎么觉得 E 比 F 难。F 题我好歹会切,E 题完全没有办法。
@atcoder - AGC002E@ Candy Piles的更多相关文章
- AtCoder AGC002E Candy Piles (博弈论)
神仙题..表示自己智商不够想不到... 好几次读成最后拿的赢了,导致一直没看懂题解... 题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_e ...
- [Agc002E]Candy Piles
[Agc002E]Candy Piles 题目大意 有\(n\)个数,两人轮流操作,可以做以下操作之一: 删掉一个最大的数 将所有数-1 最后取没的人输,问先手是否必胜? 试题分析 直接决策不知道选哪 ...
- AtCoder - 1999 Candy Piles
Problem Statement There are N piles of candies on the table. The piles are numbered 1 through N. At ...
- agc002E - Candy Piles(博弈论)
题意 题目链接 Sol Orz SovitPower #include<bits/stdc++.h> #define Pair pair<int, double> #defin ...
- 【AGC002E】Candy Piles 博弈论
题目大意 有\(n\)堆糖果,第\(i\)堆有\(a_i\)个. 两个人轮流决策,决策分为两种: 1.选择糖果数最多的一堆糖果,并把这堆糖全吃了. 2.在每堆非空的糖果堆里拿一颗糖吃掉. 吃掉最后一颗 ...
- [Agc002E/At1999] Candy Piles - 博弈论
有n堆石子,第i堆有ai个石子.有两种操作: 把石子最多的那一堆给丢掉 把每一堆全部丢掉一个 谁拿走最后石子谁输.判断胜负情况. 直觉转化为一个走棋盘问题 考虑如何计算左下角点的状态 找到原点最右上方 ...
- [AT1999] [agc002_e] Candy Piles
题目链接 AtCoder:https://agc002.contest.atcoder.jp/tasks/agc002_e 洛谷:https://www.luogu.org/problemnew/sh ...
- AGC 002E.Candy Piles(博弈论)
题目链接 \(Description\) 给定\(n\)堆糖,数量分别为\(a_i\).Alice和Bob轮流操作.每次可以吃掉最多的一堆,也可以每堆各吃掉一个.无法操作的人输,求谁能赢. \(n\l ...
- [AtCoder AGC27A]Candy Distribution Again
题目大意:把$x$个糖果分给$n$个人,必须分完,如果第$i$个人拿到$a_i$个糖果,就会开心,输出最多多少人开心 题解:从小到大排序,判断是否可以让他开心,注意最后判断是否要少一个人(没分完) 卡 ...
随机推荐
- UVA 11651
题目链接:https://cn.vjudge.net/problem/UVA-11651 解题思路: 思路来源于网络. DP + 矩阵快速幂. 设 dp[i][j] 为满足 score 为 i 且最后 ...
- 技术大佬:我去,你竟然还不会用 this 关键字
上一篇文章写的是 Spring Boot 的入门,结果有读者留言说,Java 都还没搞完,搞什么 Spring Boot,唬得我一愣一愣的.那这篇就继续来搞 Java,推出广受好评的我去系列第四集:你 ...
- NO.6 ADS1115与MSP432进行I2C通信_运行实例
B站第一次传视频,手机拍摄大家见谅!
- 附件2:async/await
在实际开发中总会遇到许多异步的问题,最常见的场景便是接口请求之后一定要等一段时间才能得到结果,如果遇到多个接口前后依赖,那么问题就变得复杂.大家都一直在尝试使用更好的方案来解决这些问题.最开始只能利用 ...
- JVM调优总结(三)-垃圾回收面临的问题
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断.垃圾回收程序收集计数为0的对象即可.但是这种方法无法解决循环引用.所以,后来实现的垃圾判断算法中,都是从程序运行 ...
- [译] 制作 Vue 3 的过程
原文链接: https://increment.com/frontend/making-vue-3 在过去的一年里,Vue 团队一直在研究 Vue.js 的下一个主要版本,我们希望在 2020 年上半 ...
- [256个管理学理论]005.羊群效应(Herd Behavior)
羊群效应(Herd Behavior) 来自于大洋彼岸的让你看不懂的解释: “羊群效应”,也叫“从众效应”,是个人的观念或行为由于真实的或想像的群体的影响或压力,而向与多数人相一致的方向变化的现象.表 ...
- [Objective-C] 010_Foundation框架之NSSet与NSMutableSet
在Cocoa Foundation中的NSSet和NSMutableSet ,和NSArray功能性质一样,用于存储对象属于集合.但是NSSet和NSMutableSet是无序的, 保证数据的唯一性, ...
- Web缓存欺骗
该漏洞主要是cdn安全配置的问题,cdn主要存储以下文件,加快访问速度 class, css, jar, js, jpg, jpeg, gif, ico, png, bmp, pict, csv, d ...
- CVE-2016-3714-ImageMagick 漏洞利用
漏洞简介:/etc/ImageMagick/delegates.xml 将%s,%l加入到command里造成了命令执行 利用方式: poc代码: push graphic-context viewb ...