luoguP3185 [HNOI2007]分裂游戏 枚举 + 博弈论
每个位置的瓶子中的每个石子是一个独立的游戏
只要计算出他们的\(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]分裂游戏 枚举 + 博弈论相关推荐
- 【BZOJ1188】分裂游戏(博弈论)
[BZOJ1188]分裂游戏(博弈论) 题面 BZOJ 洛谷 题解 这道题目比较神仙. 首先观察结束状态,即\(P\)状态,此时必定是所有的豆子都在最后一个瓶子中. 发现每次的转移一定是拿出一棵豆子, ...
- [HNOI2007] 分裂游戏
1188: [HNOI2007]分裂游戏 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1460 Solved: 889 [Submit][Sta ...
- [HNOI2007]分裂游戏
题目描述 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i]颗巧克力豆,两个人轮流取豆子,每一轮每人选 ...
- BZOJ 1188: [HNOI2007]分裂游戏(multi-nim)
Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1386 Solved: 840 [Submit][Status][Discuss] Descrip ...
- P3185 [HNOI2007]分裂游戏
$ \color{#0066ff}{ 题目描述 }$ 聪聪和睿睿最近迷上了一款叫做分裂的游戏. 该游戏的规则试: 共有 n 个瓶子, 标号为 0,1,2.....n-1, 第 i 个瓶子中装有 p[i ...
- bzoj1188: [HNOI2007]分裂游戏
这是一道很有特点的博弈啊... 首先我们可以把每个不同的豆子看成一个子游戏,然后它的SG值就是它所处于的位置,知道这一点就简单了 然后对于当前胜负判断就容易弄了,只要那些豆子数%2==1的SG值合起来 ...
- [BZOJ1188/Luogu3185][HNOI2007]分裂游戏
题目链接: BZOJ1188 Luogu3185 博弈论. 首先,每一堆石子都是互相独立,不影响的,那么就只需求解每一堆的\(SG\)函数\(Xor\)即可. 再想,对于每一堆石子,里面的每一个石头都 ...
- [BZOJ1188][HNOI2007]分裂游戏
原题地址 发现每颗豆子是独立的,所以我们可以对每颗豆子单独考虑(看作一个组合游戏). 然后直接SG即可. #include <cstdio> const int N=22; int t,n ...
- 2017.3.24 分裂游戏 思考记录
事先说明:这不是好题解,这只是思考记录 同机房的xp都学博弈了.. 感觉还是学学看吧 先来看一下简单的nim: 题目: Alice和Bob放置了N堆不同的石子,编号1..N,第i堆中有A[i]个 ...
最新文章
- 2月书讯 | 冬奥结束看什么?看看“天花板”级别新作!
- 百度智能搜索到底有多智能?
- JavaScript之Style属性学习
- 被人画是怎样一种体验?
- 语音聊天室 html,聊天室 - HTML - php中文网博客
- 中nextint函数_Kotlin中的作用域方法(Scope Function)
- 我们不再需要 Chrome?
- 从源头入手,一分钟秒懂为什么要搞微服务架构?(转)
- mysql 显示重叠_一句话实现MySQL库中的重叠分组
- 努力就一定会成功,这或许是一个问题?
- AutoCAD.net Transaction实例4 标高
- win10微软账户无法连接服务器,Win10系统Microsoft微软帐户无法登陆的解决方法
- MacOS从清空的废纸篓找回被删除文件的方法
- 【JavaSE】继承基本使用
- Java获取当前电脑的ip地址
- python编程大赛队名_同行——团队展示
- 判断栈的出栈顺序是否正确
- fontawesome图标字体使用
- AC自动机模板(【洛谷3808】)
- 笔记-JMH(Java Microbenchmark Harness)
热门文章
- python语句大全input_input提示文字 Python基础输入函数,if-else语句,if-elif
- 广州电子厂房净化工程_简述设计电子车间净化工程的注意要点
- js如何获取jwt信息_谈房地产公众号如何涨粉?一篇文章让你轻松获取信息
- php 浏览器 打印控件,JavaScript_JavaScript 实现打印,打印预览,打印设置,WebBrowser是IE内置的浏览器控件 - phpStudy...
- android 音频合成_【Android工具】用手机测量噪声的工具软件,噪声仪分贝计,量化噪声声音工具...
- java向指定文件继续写内容_java 向指定文件写入内容(如文件存在,则先删除再创建;写入如目录不存在,则创建)...
- 1051 复数乘法(PAT乙级 C++)
- hd-sdi转hdmi转换器产品规格参数及接口定义详解
- 工业以太网交换机的冗余功能及发展历程介绍
- 485通讯转换器产品功能特点介绍