[AT1999] [agc002_e] Candy Piles
题目链接
AtCoder:https://agc002.contest.atcoder.jp/tasks/agc002_e
洛谷:https://www.luogu.org/problemnew/show/AT1999
Solution
设\(f[i][j]\)表示拿了\(i\)个最大的,全部减一了\(j\)次先手必胜还是必败。
那么把表打出来可以发现它长这样:

无耻的偷大佬的图
发现必胜或必败状态都是一条一条的,证明比较显然,考虑\(f[i][j]\)可以由\(f[i+1][j],f[i][j+1]\)转移过来即可。
那么我们直接找到\((0,0)\)的那一条的状态就好了。
#include<bits/stdc++.h>
using namespace std;
void read(int &x) {
    x=0;int f=1;char ch=getchar();
    for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-f;
    for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';x*=f;
}
void print(int x) {
    if(x<0) putchar('-'),x=-x;
    if(!x) return ;print(x/10),putchar(x%10+48);
}
void write(int x) {if(!x) putchar('0');else print(x);putchar('\n');}
#define lf double
#define ll long long 
#define pii pair<int,int >
#define vec vector<int >
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
const int maxn = 1e5+10;
const int inf = 1e9;
const lf eps = 1e-8;
int n,a[maxn],ans;
int main() {
    read(n);for(int i=1;i<=n;i++) read(a[i]);
    sort(a+1,a+n+1),reverse(a+1,a+n+1);a[0]=a[1];
    for(int i=0;i<=n;i++)
        if(a[i+1]<=i) {
            ans=(a[i]-i)&1;
            int j=i+1;while(a[j]==i&&j<=n) j++;
            ans|=(j-i+1)&1;break;
        }puts(ans?"First":"Second");
    return 0;
}
												
											[AT1999] [agc002_e] Candy Piles的更多相关文章
- [Agc002E]Candy Piles
		
[Agc002E]Candy Piles 题目大意 有\(n\)个数,两人轮流操作,可以做以下操作之一: 删掉一个最大的数 将所有数-1 最后取没的人输,问先手是否必胜? 试题分析 直接决策不知道选哪 ...
 - [Agc002E/At1999] Candy Piles - 博弈论
		
有n堆石子,第i堆有ai个石子.有两种操作: 把石子最多的那一堆给丢掉 把每一堆全部丢掉一个 谁拿走最后石子谁输.判断胜负情况. 直觉转化为一个走棋盘问题 考虑如何计算左下角点的状态 找到原点最右上方 ...
 - AtCoder - 1999  Candy Piles
		
Problem Statement There are N piles of candies on the table. The piles are numbered 1 through N. At ...
 - AtCoder AGC002E Candy Piles (博弈论)
		
神仙题..表示自己智商不够想不到... 好几次读成最后拿的赢了,导致一直没看懂题解... 题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_e ...
 - 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.在每堆非空的糖果堆里拿一颗糖吃掉. 吃掉最后一颗 ...
 - AGC 002E.Candy Piles(博弈论)
		
题目链接 \(Description\) 给定\(n\)堆糖,数量分别为\(a_i\).Alice和Bob轮流操作.每次可以吃掉最多的一堆,也可以每堆各吃掉一个.无法操作的人输,求谁能赢. \(n\l ...
 - [atcoder002E] Candy Piles [博弈论]
		
题面: 传送门 思路: 每一堆糖排成一列,所有列横着放,形成一个阶梯型 两个决策相当于左边一列去掉和最下面一行去掉 那么这个模型可以转化为同样形状的网格图,向左上方走,走到边界的赢· 然后一波数学推导 ...
 - 【AGC002 E】Candy Piles
		
本来实在写不动这题 sol 了,但一想这是个经典的模型转化问题,于是就写了(.jpg) 题意 有一个序列 \(a_i\). 两人轮流操作,每次操作为二选一: 1. 把最大的 \(a_i\) 减成 \( ...
 
随机推荐
- Window10家庭版启动hyper-v虚拟机组件
			
在安装docker的时候发现如果直接使用docker for windows,对系统的要求是window10专业版或企业版,家庭版本身没有hyper-v,不能支持 虚拟化.但是后来我在搜索过程中发现, ...
 - 【LeetCode算法题库】Day3:Reverse Integer & String to Integer (atoi) & Palindrome Number
			
[Q7] 把数倒过来 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Outpu ...
 - v-if、v-show 指令
			
HTML部分: <div id="app"> <button type="button" @click="flag=!flag&qu ...
 - 使用json.dumps转换django queryset的datatime报错问题解决
			
转换成json时使用的方法如下: json.dumps(list(models.userlist.objects.values("vu"))) 报错信息如下: Traceback ...
 - 机器学习之k-最近邻(kNN)算法
			
一.kNN(k-nearest neighbor)算法原理 事物都遵循物以类聚的思想,即有相同特性的事物在特征空间分布上会靠得更近,所以kNN的思路是:一个样本在特征空间中k个靠的最近的样本中,大多数 ...
 - linux递归查找文件内容并替换
			
sed -i 's/原字符串/替换后字符串/g' `grep '搜索关键字' -rl /data/目标目录/ --include "*.html"` 上面是递归查找目录中所有的HT ...
 - shutil模块详解
			
python常用模块目录 注意:shutil经常遇到路径需要转义一下才能执行,在字符串前面加 r转义 r" " 1.shutil常用方法 import shutil# 删除目录 ...
 - dumpe2fs命令详解
			
基础命令学习目录首页 dumpe2fs 显示ext2.ext3.ext4文件系统的超级快和块组信息.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE ...
 - 王者荣耀交流协会final发布-第一次scrum立会
			
1.例会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐 master:袁玥 2.时间跨度 2017年12月1日 17:00 — 17:31,总计31分钟 3.地点 一食堂二楼沙发座椅 ...
 - 面向对象OO第9-11次作业总结
			
面向对象OO第9-11次作业总结 1.关于规格化设计的调研程序规格说明:对程序所应满足的要求,以可验证的方式作出完全.精确陈述的文件.“规格说明”一词与其他工业产品的“规格说明书”有相似的含义.不过, ...