[atcoder002E] Candy Piles [博弈论]

Posted Orion545

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[atcoder002E] Candy Piles [博弈论]相关的知识,希望对你有一定的参考价值。

题面:

传送门

思路:

每一堆糖排成一列,所有列横着放,形成一个阶梯型

两个决策相当于左边一列去掉和最下面一行去掉

那么这个模型可以转化为同样形状的网格图,向左上方走,走到边界的赢·

然后一波数学推导带走

Code:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 int n,ans,a[100100];
 6 int main(){
 7     scanf("%d",&n);
 8     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
 9     sort(a+1,a+n+1);
10     reverse(a+1,a+n+1);
11     for(int i=1;i<=n;i++){
12         if(i+1>a[i+1]){
13                for(int j=i+1;a[j]==i;j++) ans^=1;
14                ans|=(a[i]-i)&1;
15                puts(ans? "First":"Second");
16                return 0;
17            }    
18     }    
19 } 

 

以上是关于[atcoder002E] Candy Piles [博弈论]的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder - 1999 Candy Piles

@atcoder - AGC002E@ Candy Piles

[AtCoder AGC27A]Candy Distribution Again

[leetcode] 875. 爱吃香蕉的珂珂(周赛)

Codeforces Round #575 (Div. 3) (A. Three Piles of Candies)(数学)

135. Candy