Stone Game, Why are you always there? HDU - 2999(sg定理)
题意:给你n个数的集合,表示你每次取石子只能为集合里的数,然后给你一排石子,编号为1~n,每次你可以取相邻位置的连续石子(数量只能为集合里的数),注意石子的位置时不变的,比如把2拿走了,1和3还是不相邻的。问先手有没有机会赢。
思路:如果我们取靠边的x个石子那么就是转移成sg[i-x],如果我们取中间的石子,就变成的不相邻的两排,也就是把单一的游戏拆成了两个,然后用sg就好了
原文地址:https://blog.csdn.net/chy20142109/article/details/52145607
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #include <stack> #include <queue> #include <algorithm> #include <cmath> #define MOD 2018 #define LL long long #define ULL unsigned long long #define Pair pair<int, int> #define mem(a, b) memset(a, b, sizeof(a)) #define _ ios_base::sync_with_stdio(0),cin.tie(0) //freopen("1.txt", "r", stdin); using namespace std; const int maxn = 10010, INF = 0x7fffffff; int sg[maxn], vis[maxn]; int a[maxn]; int main() {int n, m;while(cin>> n){for(int i=0; i<n; i++)cin>> a[i];sort(a, a+n);sg[0] = 0;for(int i=1; i<=1000; i++){mem(vis, 0);for(int j=0; j<n; j++){if(a[j] > i) break;vis[sg[i-a[j]]] = 1;if(i - a[j] > 1){for(int k=1; k<= i-a[j]-1; k++)vis[sg[k] ^ sg[i-a[j]-k]] = 1;}}for(int j=0; ; j++)if(!vis[j]){sg[i] = j;break;}}cin>> m;for(int i=0; i<m; i++){int temp;cin>> temp;if(sg[temp])cout<< 1 <<endl;elsecout<< 2 <<endl;}}return 0; }
转载于:https://www.cnblogs.com/WTSRUVF/p/9336171.html
Stone Game, Why are you always there? HDU - 2999(sg定理)相关推荐
- HDU - 2973威尔逊定理
核心问题就是那个等式 我们观察到等式可以写成(n-1)!-1/n-[(n-1)!/n]的形式,这样就应该联想到威尔逊定理了. 回顾一下威尔逊定理的内容:当且仅当n为素数的时候n|(n-1)!-1,n为 ...
- hdu 3037 Lucas定理
题目可以转换成 x1+x2+--+xn=m 有多少组解,m在题中可以取0-m. x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为: (m+1)*(m+2)...(m+n-1) = ...
- HDU 1848 SG函数
这题运用博弈中的SG函数解决的,感觉初级博弈题用这个很好用但是难一些的还是不会求SG值,就是SG的模板题. #include <iostream> #include<cstdio&g ...
- 惹某人突然不舍de第七周(习题+感悟)
我是个没有感情的WA题机器人 (一)课堂 A - 小兔的棋盘 HDU - 2067 Input Output Sample Input Sample Output AC代码 (二)有趣的题目 A - ...
- 【博弈论】博弈论题单题解
会不断更新的(咕咕咕) 题目难度大致满足非降性 博弈论真是深坑啊,填不动了,还有Nim积.Every-SG游戏等等等等很多题型还不会,先去学别的了 涉及知识: SG函数及SG定理:传送门 博弈论知识总 ...
- hdu 4664 Triangulation
// 题意: 给定N个平面,每个平面有ni个点 // ni个点组成一个凸多边形 // // 然后在N个平面上进行游戏,每次选取一个平面进行 // 在每个平面上可以选择两个点链接一条直线 // 每次选择 ...
- (转载)--SG函数和SG定理【详解】
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...
- 组合博弈游戏 - SG函数和SG定理
转载来自:http://blog.csdn.net/luomingjun12315/article/details/45555495 在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜 ...
- 组合游戏 - SG函数和SG定理
在介绍SG函数和SG定理之前我们先介绍介绍必胜点与必败点吧. 必胜点和必败点的概念: P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败. N点:必胜点,处于此情况下,双方操作均正 ...
最新文章
- AS3 Drawing API演讲稿
- Spring中日期格式转换
- java学习论坛汇总
- c语言程序为什么运行一半就自动关闭了,C语言为什么程序运行一半就出现停止工作...
- JavaFX逆运动学库2.0
- [原创]FineUI秘密花园(二十一) — 表格之动态创建列
- 鸿蒙行车记录仪,百度导航新增行车记录仪功能 可消除碰瓷风险
- MongoDB小型文档型数据库使用
- 聊一聊 “超 大 模 型”
- SSH家政服务系统设计与实现答辩PPT免费下载
- 手工修复Win 7下彩影ARP防火墙驱动程序(适用于32/64位系统)
- PyKDL---正运动学和逆运动学
- 运算服务器v9型号,V9服务器
- 英语数字转换器(POJ NO.1123)
- 北京首都国际机场1号航站楼、2号航站楼、3号航站楼航空公司名单
- FBE 与FDE学习总结
- 稳压二极管和TVS二极管的区别
- 酷睿i5 12500h怎么样 i512500h是标压吗
- 【基于人脸特征的心率检测研究】非接触式光电容积图和红外人脸视频瞬时心率估计
- MySQL使用GROUP BY分组时如何留下指定的行
热门文章
- 基友扫雷通关跟我炫耀!于是用Python自动扫雷程序十秒通关
- php msi安装教程,如何判断msi安装包程序是否安装及安装路径
- CVPR2019| 最新CVPR2019论文抢先看!
- 量子科技概念大火,国内现状如何?华为BAT均入局量子计算
- 收藏 | 程序员必须掌握哪些算法?
- 《Python编程从入门到实践》记录之range、min、max、sum函数
- rsa java模数_RSA公私钥获取模数和质数
- linux gdb打印内存命令,gdb中查看内存方法总结
- word修改一处另一处自动修改_这么做让word自动记录修改明细,再也不用一个字一个字的核对了...
- Kali Linux 从入门到精通(三)-入侵系统定制