每个位置的瓶子中的每个石子是一个独立的游戏

只要计算出他们的\(sg\)值即可

至于方案数,反正不多\(n^3\)暴力枚举即可

反正怎么暴力都能过啊

复杂度\(O(Tn^3)\)


#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;#define ll long long
#define ri register int
#define rep(io, st, ed) for(ri io = st; io <= ed; io ++)
#define drep(io, ed, st) for(ri io = ed; io >= st; io --)#define gc getchar
inline int read() {int p = 0, w = 1; char c = gc();while(c < '0' || c > '9') { if(c == '-') w = -1; c = gc(); }while(c >= '0' && c <= '9') p = p * 10 + c - '0', c = gc();return p * w;
}int n, sg[25], mex[105];inline void get_sg() {sg[n] = 0;drep(i, n - 1, 1) {memset(mex, 0, sizeof(mex));rep(j, i + 1, n) rep(k, j, n)mex[sg[j] ^ sg[k]] = 1;rep(j, 0, 100)if(!mex[j]) { sg[i] = j; break; }}
}int main() {int T = read();while(T --) {n = read(); get_sg();int SG = 0;rep(i, 1, n) SG ^= (read() & 1) * sg[i];if(!SG) {printf("-1 -1 -1\n");printf("0\n"); continue;}int ans = 0, flag = 0;rep(i, 1, n) rep(j, i + 1, n) rep(k, j, n)if((SG ^ sg[i] ^ sg[j] ^ sg[k]) == 0) {if(!flag) { printf("%d %d %d\n", i - 1, j - 1, k - 1); flag = 1; }ans ++;}printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/reverymoon/p/10152046.html

luoguP3185 [HNOI2007]分裂游戏 枚举 + 博弈论相关推荐

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

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

  2. [HNOI2007] 分裂游戏

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

  3. [HNOI2007]分裂游戏

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

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

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

  5. P3185 [HNOI2007]分裂游戏

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

  6. bzoj1188: [HNOI2007]分裂游戏

    这是一道很有特点的博弈啊... 首先我们可以把每个不同的豆子看成一个子游戏,然后它的SG值就是它所处于的位置,知道这一点就简单了 然后对于当前胜负判断就容易弄了,只要那些豆子数%2==1的SG值合起来 ...

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

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

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

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

  9. 2017.3.24 分裂游戏 思考记录

    事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了..    感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...

最新文章

  1. 2月书讯 | 冬奥结束看什么?看看“天花板”级别新作!
  2. 百度智能搜索到底有多智能?
  3. JavaScript之Style属性学习
  4. 被人画是怎样一种体验?
  5. 语音聊天室 html,聊天室 - HTML - php中文网博客
  6. 中nextint函数_Kotlin中的作用域方法(Scope Function)
  7. 我们不再需要 Chrome?
  8. 从源头入手,一分钟秒懂为什么要搞微服务架构?(转)
  9. mysql 显示重叠_一句话实现MySQL库中的重叠分组
  10. 努力就一定会成功,这或许是一个问题?
  11. AutoCAD.net Transaction实例4 标高
  12. win10微软账户无法连接服务器,Win10系统Microsoft微软帐户无法登陆的解决方法
  13. MacOS从清空的废纸篓找回被删除文件的方法
  14. 【JavaSE】继承基本使用
  15. Java获取当前电脑的ip地址
  16. python编程大赛队名_同行——团队展示
  17. 判断栈的出栈顺序是否正确
  18. fontawesome图标字体使用
  19. AC自动机模板(【洛谷3808】)
  20. 笔记-JMH(Java Microbenchmark Harness)

热门文章

  1. python语句大全input_input提示文字 Python基础输入函数,if-else语句,if-elif
  2. 广州电子厂房净化工程_简述设计电子车间净化工程的注意要点
  3. js如何获取jwt信息_谈房地产公众号如何涨粉?一篇文章让你轻松获取信息
  4. php 浏览器 打印控件,JavaScript_JavaScript 实现打印,打印预览,打印设置,WebBrowser是IE内置的浏览器控件 - phpStudy...
  5. android 音频合成_【Android工具】用手机测量噪声的工具软件,噪声仪分贝计,量化噪声声音工具...
  6. java向指定文件继续写内容_java 向指定文件写入内容(如文件存在,则先删除再创建;写入如目录不存在,则创建)...
  7. 1051 复数乘法(PAT乙级 C++)
  8. hd-sdi转hdmi转换器产品规格参数及接口定义详解
  9. 工业以太网交换机的冗余功能及发展历程介绍
  10. 485通讯转换器产品功能特点介绍