随笔分类 - 数学 博弈论
摘要:【题目】A. A String Game 【题意】给定目标串S和n个子串Ti,Alice和Bob轮流选择一个子串操作,必须且只能在子串末尾添加一个字符使得新串也是S的子串,不能操作即输,求胜利者。|S|<=10^5,n<=100。多组数据,保证Σ|S|<=3*10^7。 【算法】后缀自动机+博弈论S
阅读全文
摘要:【算法】博弈论+数论 【题意】给定n个石子,两人轮流操作,规则如下: 轮到先手操作时:若石子数<p添加p个石子,否则拿走p的倍数个石子。记为属性p。 轮到后手操作时:若石子数<q添加q个石子,否则拿走q的倍数个石子。记为属性q。 拿走所有石子的人胜利,问先手是否必胜,或输出游戏会永远进行下去。 【题
阅读全文
摘要:【算法】博弈论+记忆化搜索 【题意】给定n堆石子,两人轮流操作,每个人可以合并两堆石子或拿走一个石子,不能操作者输,问是否先手必胜 【题解】 首先,若所有石子堆的石子数>1,显然总操作数为(石子数+石子堆数-1),奇数先手必胜,偶数先手必败。 若有部分石子堆的石子数=1,情况较复杂,考虑一下五种情形
阅读全文
摘要:【算法】区间DP+博弈论 【题解】其实它都不是博弈题…… 很自然的可以设f[i][j]表示i~j先手可取得的最大价值。 容易得到转移式:f[i][j]=max(a[i]+sum[i+1~j]-f[i+1][j],a[j]+sum[i~j-1]-f[i][j-1])。 化简得到f[i][j]=sum[
阅读全文
摘要:【算法】博弈论+二分图匹配(最大流) 【题解】方格图黑白染色得到二分图, 二分图博弈:当起点不属于某个最大匹配时,后手必胜。 问题转化为那些点不属于某个最大匹配。 先找到一个最大匹配,非匹配点加入答案。 假设一个匹配点要解放成为非匹配点,则与其匹配的点必须去匹配另一个点。如果另一个点也是匹配点,则其
阅读全文
摘要:【算法】博弈论+线性基 【题解】 显然第一步取走后留给对手的序列必须不存在子序列异或和为0。 数列的线性基就是最大的值域不含0的子序列,所以取走剩下的就可以了。 从大到小插入线性基,未插入的计入答案。 #include<cstdio> #include<algorithm> using namesp
阅读全文
摘要:【算法】博弈论 【题解】这道题不是典型的SG函数题了。 不把它当成游戏看待,那么这道题是在说n个石子堆,每次可以加入若干个或进行Nim游戏。 我们当前先手,则考虑构造必败态来获胜。 当前已加入的NIm游戏SG=0,则必须考虑加入石子堆,若加入m堆构造出SG=0,对方有两种选择: 加入新的石子堆,则必
阅读全文
摘要:【算法】博弈论 【题解】 我们的目的是把游戏拆分成互不影响的子游戏,考虑游戏内的转移。 如果把每堆视为子游戏,游戏之间会相互影响,不成立。 将每堆的一个石子视为子游戏,其产生的石子都在同一个子游戏中。 虽然每堆的每个石子都是不同的子游戏,但显然SG值是可以共用的。 SG[x]表示第x堆上一个石子的S
阅读全文
摘要:【数论】数论——onion_cyc 【计数问题】计数问题(排列组合,容斥原理,卡特兰数)——onion_cyc 【概率与期望】链接 【链与反链】链接 【生成树计数(矩阵树定理)】专题链接 【快速幂】 原理:将指数化为二进制再分为若干个数相乘。 每次自己乘自己相当于平方,增加二进制权。 int qui
阅读全文
摘要:【算法】贪心 【题解】如果看重一对,先选择其中一个点,该点相邻最大的肯定被选走。所以答案就是最大的[所有点的次大连边点]啦。 #include<cstdio> #include<algorithm> #include<cmath> #include<cctype> #include<cstring>
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文