@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的更多相关文章

  1. AtCoder AGC002E Candy Piles (博弈论)

    神仙题..表示自己智商不够想不到... 好几次读成最后拿的赢了,导致一直没看懂题解... 题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_e ...

  2. [Agc002E]Candy Piles

    [Agc002E]Candy Piles 题目大意 有\(n\)个数,两人轮流操作,可以做以下操作之一: 删掉一个最大的数 将所有数-1 最后取没的人输,问先手是否必胜? 试题分析 直接决策不知道选哪 ...

  3. AtCoder - 1999 Candy Piles

    Problem Statement There are N piles of candies on the table. The piles are numbered 1 through N. At ...

  4. agc002E - Candy Piles(博弈论)

    题意 题目链接 Sol Orz SovitPower #include<bits/stdc++.h> #define Pair pair<int, double> #defin ...

  5. 【AGC002E】Candy Piles 博弈论

    题目大意 有\(n\)堆糖果,第\(i\)堆有\(a_i\)个. 两个人轮流决策,决策分为两种: 1.选择糖果数最多的一堆糖果,并把这堆糖全吃了. 2.在每堆非空的糖果堆里拿一颗糖吃掉. 吃掉最后一颗 ...

  6. [Agc002E/At1999] Candy Piles - 博弈论

    有n堆石子,第i堆有ai个石子.有两种操作: 把石子最多的那一堆给丢掉 把每一堆全部丢掉一个 谁拿走最后石子谁输.判断胜负情况. 直觉转化为一个走棋盘问题 考虑如何计算左下角点的状态 找到原点最右上方 ...

  7. [AT1999] [agc002_e] Candy Piles

    题目链接 AtCoder:https://agc002.contest.atcoder.jp/tasks/agc002_e 洛谷:https://www.luogu.org/problemnew/sh ...

  8. AGC 002E.Candy Piles(博弈论)

    题目链接 \(Description\) 给定\(n\)堆糖,数量分别为\(a_i\).Alice和Bob轮流操作.每次可以吃掉最多的一堆,也可以每堆各吃掉一个.无法操作的人输,求谁能赢. \(n\l ...

  9. [AtCoder AGC27A]Candy Distribution Again

    题目大意:把$x$个糖果分给$n$个人,必须分完,如果第$i$个人拿到$a_i$个糖果,就会开心,输出最多多少人开心 题解:从小到大排序,判断是否可以让他开心,注意最后判断是否要少一个人(没分完) 卡 ...

随机推荐

  1. JQuery动态创建表单并提交

    // 捕捉链接的点击事件 $('#btn').click(function(){ // 取得要提交的参数 var my_val = $.trim($('#ipt').val()); // 取得要提交页 ...

  2. HTML中id与name的通俗区别

    转自:https://blog.csdn.net/qq_35038153/article/details/70215356 https://zhidao.baidu.com/question/7582 ...

  3. dede搜索页做法

    触发搜索页代码 <p class="fl"> <span>热门搜索:</span> {dede:hotwords num=8 subday=36 ...

  4. npm audit fix 报错

    found 2504 vulnerabilities (1360 low, 1109 moderate, 29 high, 6 critical)  run `npm audit fix` to fi ...

  5. StringUtils、CollectionUtils工具类的常用方法

    唯能极于情,故能极于剑 欢迎来到 “程序牛CodeCow” 的博客,有问题请及时关注小编公众号 “CodeCow”,大家一起学习交流 下面将为大家演示StringUtils.CollectionUti ...

  6. 使用VuePress搭建个人博客

    使用VuePress搭建个人博客 VuePress 是一个基于 Vue 的静态网站生成器.其中主要用到:Vue,VueRouter,Webpack. 类似的工具:hexo 基于 Markdown 语法 ...

  7. 【SocketIoClientDotNet】Nuget包安装问题

    问题: Nuget安装[SocketIoClientDotNet]失败 错误信息: Operation failed Expected 1 export(s) with contract name & ...

  8. [SD心灵鸡汤]005.每月一则 - 2015.09

    精彩的激励人生的话都是从成功者嘴里说出来的,他们成功的过程我们仅仅知道一二,结果却是名满天下.既然看这个激励语,就是想要成功的人,所以大家好好读懂,然后执行,那么你离成功就不远了! 1.万里寻山历百艰 ...

  9. 【Linux】CentOS 7安装与使用,安装jdk1.8,安装mysql

    虚拟机软件VMware Workstation Pro 安装CentOS7,准备好镜像文件! 一定要勾选"启动时连接" 语言选英语 时区点击上海 确认硬盘,就是点击黄色警告的那个, ...

  10. SpringBoot 定制 starter 启动器

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 在实际项目开发中,我们常常会用到各种各样的 starter,这些starter 有的是有 springb ...