这是一道很有特点的博弈啊。。。

首先我们可以把每个不同的豆子看成一个子游戏,然后它的SG值就是它所处于的位置,知道这一点就简单了

然后对于当前胜负判断就容易弄了,只要那些豆子数%2==1的SG值合起来就好

方案数可以暴力枚举

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;int n,p[30],sg[30];
bool v[11000];
int SG(int i)
{if(sg[i]!=-1)return sg[i];memset(v,false,sizeof(v));for(int j=i+1;j<=n;j++)for(int k=j;k<=n;k++)v[SG(j)^SG(k)]=true;for(int u=0;;u++)if(v[u]==false){sg[i]=u;return sg[i];}
}
int main()
{int T;scanf("%d",&T);while(T--){int ans=0;scanf("%d",&n);memset(sg,-1,sizeof(sg));sg[n]=0;for(int i=1;i<=n;i++){scanf("%d",&p[i]);if(p[i]%2==1)ans^=SG(i);}int sum=0;for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)for(int k=j;k<=n;k++)if((ans^SG(i)^SG(j)^SG(k))==0){sum++;if(sum==1)printf("%d %d %d\n",i-1,j-1,k-1);}if(sum==0)printf("-1 -1 -1\n");printf("%d\n",sum);}return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/10171943.html

bzoj1188: [HNOI2007]分裂游戏相关推荐

  1. [BZOJ1188][HNOI2007]分裂游戏

    原题地址 发现每颗豆子是独立的,所以我们可以对每颗豆子单独考虑(看作一个组合游戏). 然后直接SG即可. #include <cstdio> const int N=22; int t,n ...

  2. 【BZOJ1188】分裂游戏(博弈论)

    [BZOJ1188]分裂游戏(博弈论) 题面 BZOJ 洛谷 题解 这道题目比较神仙. 首先观察结束状态,即\(P\)状态,此时必定是所有的豆子都在最后一个瓶子中. 发现每次的转移一定是拿出一棵豆子, ...

  3. [HNOI2007] 分裂游戏

    1188: [HNOI2007]分裂游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1460  Solved: 889 [Submit][Sta ...

  4. [BZOJ1188/Luogu3185][HNOI2007]分裂游戏

    题目链接: BZOJ1188 Luogu3185 博弈论. 首先,每一堆石子都是互相独立,不影响的,那么就只需求解每一堆的\(SG\)函数\(Xor\)即可. 再想,对于每一堆石子,里面的每一个石头都 ...

  5. [HNOI2007]分裂游戏

    题目描述 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子,每一轮每人选 ...

  6. BZOJ 1188: [HNOI2007]分裂游戏(multi-nim)

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 1386  Solved: 840 [Submit][Status][Discuss] Descrip ...

  7. P3185 [HNOI2007]分裂游戏

    $ \color{#0066ff}{ 题目描述 }$ 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i ...

  8. luoguP3185 [HNOI2007]分裂游戏 枚举 + 博弈论

    每个位置的瓶子中的每个石子是一个独立的游戏 只要计算出他们的\(sg\)值即可 至于方案数,反正不多\(n^3\)暴力枚举即可 反正怎么暴力都能过啊 复杂度\(O(Tn^3)\) #include & ...

  9. 【BZOJ1188】分裂游戏,博弈

    传送门 思路: 显然每个石子堆都是独立的 而且只有石子数为奇数的石子堆才会对答案有影响 因为偶数时对手可以"模仿"你的操作 然后爆枚一下每堆石子的后继状态就可以了 像DP那样做 复 ...

最新文章

  1. 悬浮按钮app_分享一款网页转App的神器,绝对值得一用
  2. 什么是移臂调度,什么是旋转调度?
  3. oracle asm dd命令,使用dd命令复制ASM磁盘的spfile
  4. 怎样才算熟悉python-怎么样才算是精通 Python?
  5. Edward Gaming, the Champion 字符串,模拟(2021.11.沈阳)
  6. 计算机网络考试试题库-期末考试题库含答案
  7. c语言编程游戏开代码错误,[蓝桥杯][历届试题]数字游戏 (C语言代码)(兄弟们帮我看一下为什么运行错误86%)...
  8. mysql double 转 字符串_没想到!在MySQL数据库中的数据有这三种类型!
  9. python连接mongodb的库文件pymongo
  10. 入侵检测技术-矛与盾
  11. matplotlib绘制李萨如图(一) 静态2D李萨如图
  12. Windows Mobile 6 模拟器绿色中文版 - 在PC上模拟并运行智能手机的软件游戏
  13. 判断对错html,js制作单选题,能判断对错
  14. 计算机启动进入不了桌面图标,电脑开机不显示桌面图标怎么办,开机桌面图标不显示解决办法...
  15. 首先提出电子计算机存储程序的科学家,1、世界上首先实现存储程序的电子数字计算机是___C_。.doc...
  16. 模糊查询like 如何查找 包含% 或者_的行
  17. springboot项目在线程中调用service访问数据库
  18. 搜狗输入法候选框出现乱码的解决办法
  19. STM32G070RBT6基于Arduino框架GPIO外部中断
  20. android模拟器中,不能将文件拷贝到的/system分区的原因,以及自动化解决方法

热门文章

  1. Redis 文档阅读笔记 (一)
  2. iOS如何随意的穿插跳跃,push来pop去
  3. BZOJ 3990: [SDOI2015]排序(搜索+剪枝)
  4. vim中的 recording
  5. xipian的php中文分词
  6. Planetary Science and Life in the Universe
  7. final year project prepare part one 认知论
  8. 要找到现阶段最适合自己的方法
  9. WIN32下(非MFC)自编TRACE
  10. C++学习札记(2011-09-30)