P1288 取数游戏(博弈论)

转载自https://blog.csdn.net/Brian_Pan_/article/details/103860752

可以把环想象成两条路,如果没有天生的0,那两条路就是一样的(如果有的话,就两个方向跑一遍,奇数个非零alice必胜)

如果是偶数个的话,就没有必胜的策略了,只能根据bob所走的选择我们Alice最优的方案(不是我们考虑的范围)

复制代码
 1 #include<iostream>
 2 using namespace std;
 3 const int N=30;
 4 int a[N];
 5 int main(void)
 6 {
 7     int n;
 8     cin>>n;
 9     for(int i=1;i<=n;i++)
10     {
11         cin>>a[i];
12     }
13     int ans1=0;
14     for(int i=1;i<=n;i++)
15     {
16         if(a[i])
17             ans1++;
18     }
19     int ans2=0;
20     for(int i=n;i>=1;i--)
21     {
22         if(a[i])
23             ans2++;
24     }
25     if(ans1&1||ans2&1)
26         cout<<"YES"<<endl;
27     else
28         cout<<"NO"<<endl;
29     return 0;
30 }
复制代码

我们可以把这个环想象成两条路,如果路的尽头没有边权为 0

0 的边,那么两条路径就是一样的。

 

我们可以把这个环想象成两条路,如果路的尽头没有边权为 0

0 的边,那么两条路径就是一样的。

对于一条路径,设 Alice

Alice 为先手,那么她将她走过的路径边权变为 00。轮到 BobBob 时,他最多也只能有一条路可以走。如果他选择不将该路边权变为 00,下一步 AliceAlice 一折返他就输了。如果他将边权变为 00,那么就变成重复以上操作了
最后如果路径长度为奇数,AliceAlice 还是赢;路径长为偶数的话 Alice

Alice 就没有必胜策略

这样这题就被转化成判断两条路径奇偶性了

 

posted on   greenofyu  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示