摘要: 设$f[x]$表示为了保证自己可以取到质数$x$,第一步在$[0,n]$中可以选的数是多少。 这个数是唯一的,因为如果存在两个$f[x]=a,b(a<b)$,那么如果先手取了$a$,后手就能取$b$来让先手取不到$x$,矛盾。 如果$x$与下一个质数之间的差值大于$n$,那么$f[x]$就是结果,当 阅读全文
posted @ 2017-09-03 17:00 Claris 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 首先将排列和整个序列以及询问都反过来,问题变成给定一个位置$x$,问它经过若干轮置换后会到达哪个位置。 每次置换之后窗口都会往右滑动一个,因此其实真实置换是$p[i]-1$。 对于每个询问,求出轮数,倍增找到最终位置,注意当中途走到$0$时,说明离开了窗口,应及时终止。 时间复杂度$O((m+q)\ 阅读全文
posted @ 2017-09-03 04:07 Claris 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 考虑容斥,枚举哪些串必然出现,那么贡献为$(-1)^{选中的串数}$。 设$f[i][j]$表示$i$的子树内,$i$点往上是$j$这个串的贡献之和,那么总状态数为$O(n+m)$,用map存储$f$。 将子树的DP值与父亲合并时,按串长分类讨论: 若子树串比较长,那么暴力枚举它的前缀状态转移即可。 阅读全文
posted @ 2017-09-03 02:56 Claris 阅读(480) 评论(0) 推荐(0) 编辑