SG函数入门——【2017.5.28提高组模拟】Simple Game
来源:互联网 发布:java项目案例分析 编辑:程序博客网 时间:2024/06/08 19:00
Description:
Input:
Output:
Print the number of initial arrangements of piles that will result in Little Cat winning, modulo 10^9+7.
Sample Input:
4 3 3
Sample Output:
Data Constraint:
1<=M<=10
M<=N<=600
2<=k<=600
吹水:
又是英文题@¥!@
题目大意:
现在绝顶聪明两个人在玩一个游戏:有m个集合,总共有n个元素,两人轮流操作,每次选定一个元素个数大于1的集合,把它分成i(2 <= i <= k)个非空集合,每个集合的大小随便定,最后没得选的人判负。
要求建m个总共有n个东西的集合,且使得先手必赢,求方案数。
1 <= m <= 10, m <= n <= 600, 2 <= k <= n
题解:
博弈题。
利用sg函数,我们先求出单独一个集合是的sg值,然后动态规划拼一起就行了。
性质:
k = 2: sg(x) = 1 - x mod 2
k = 3: 暴力求。
k > 3: sg(x) = x - 1
证明:
最后一个不会,老曹说这种题的sg都要打表找规律。
这么讲肯定不懂sg的肯定还是懵。
先讲讲什么是sg。
x是一个状态,sg(x) 如果是0, 说明x这个状态先手必输,否则必赢。
sg有许多神奇的性质,实际上它的值很难解释意义。
1.x没有后继, sg(x) = 0
2.x有后继,a1,a2,a3..ak是它的后继,sg(x) = mex{sg(
3.x可以拆成一些互不影响的状态,如果它们分别是a1,a2..ak,sg(x) = sg(a1) xor sg(a2) xor sg(ak)
3证明现在我还不会,之后会补。
这道题中频繁用到3,好好理解就可了。
- SG函数入门——【2017.5.28提高组模拟】Simple Game
- hdu1851_A Simple Game博弈—SG函数
- [jzoj5122]【2017.5.28提高组模拟】Simple Game [未完]
- POJ2311——Cutting Game(sg函数)
- hdoj 1851 A Simple Game(组合博弈, sg函数)
- hdu1851 A Simple Game-----sg
- Partitioning Game (SG函数)
- hdu 1851 A Simple Game SG定理
- HDU1851A Simple Game(SG定理)
- HDOJ 1851 A Simple Game 博弈 SG函数中找规律
- HDU 1848 Fibonacci again and again && HDU 1851 A Simple Game (基础sg函数)
- hdu Stone Game SG函数
- hdu1730 Northcott Game SG函数
- HDU1729 Stone Game (SG函数)
- hdu1729 Stone Game-sg函数
- POJ2311 Cutting Game SG函数
- HDU1079 Calendar Game SG函数
- sg函数入门题
- HTML与XML比较
- 凸包的解法
- winform
- 561. Array Partition I
- java编程---用户通讯录管理小程序--(xml拓展)(一)--登录模块以及注册模块
- SG函数入门——【2017.5.28提高组模拟】Simple Game
- Unity3D:Gizmos画圆(原创)
- pipelines和重定向命令
- 欢迎使用CSDN-markdown编辑器
- 最长上升子序列
- 行逻辑链接的矩阵乘法
- Linux下mplayer播放器安装及故障排除
- Error:Failed to complete Gradle execution. Cause: The version of Gradle you are using (2.14.1) does
- 用友U8手工删除账套的SQL