[LOJ6436]神仙的游戏】的更多相关文章

感觉border的性质还是挺神奇的 一个border的性质是$S$有长度为$len$的border当且仅当对$\forall i\equiv j\left(\bmod(n-len)\right)$有$S_i=S_j$,也就是说它有长度为$len-i$的循环节(末尾多出来的部分需要和开头一样),画个图就知道这个性质是对的 所以我们把整个字符串分成长度为$n-len$的许多组,记$\text{pre}_i=S_{1\cdots i},\text{suf}_i=S_{i\cdots n}$ 一个结论是…
[LOJ6436][PKUSC2018]神仙的游戏(NTT) 题面 LOJ 题解 看到\(zsy\)从\(PKUSC\)回来就秒掉了这种神仙题 吓得我也赶快看了看\(PKUSC\)都有些什么神仙题 然后就找到了这样一道神仙题 考虑一个奇怪的暴力: 我们只需要对于\(0/1\)进行匹配 如果出现了\(0/1\)匹配的情况,那么当前长度一定不能构成\(border\) 的确,这样子肯定是对的, 但是我们似乎有一些奇怪的情况没有考虑清楚 如果两个串出现了交集,似乎不能构成\(border\)的情况就会…
题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 这样做 . 把通配符设成 \(0\) 然后 . 别的按 \(\mathrm{ASCII}\) 码 给值 , 最后把他写成式子的形式 ... 后来发现太年轻了 qwq 先要做这题 , 那么先发现性质咯 : 存在一个长度为 \(len\) 的 \(border\) 当且仅当对于 \(\forall i…
传送门 Sol 自己还是太 \(naive\) 了,上来就构造多项式和通配符直接匹配,然后遇到 \(border\) 相交的时候就 \(gg\) 了 神仙的游戏蒟蒻还是玩不来 一个小小的性质: 存在长度为 \(len\) 的 \(border\) 的充要条件是 \(\forall i,s_i=s_{n-len+i}\) 等价于按照 \(n-len\) 的剩余系分类,那么每一类都要求不同时含有 \(0,1\) 考虑两个位置 \(i,j\) 分别为 \(0,1\) 会对于哪一些长度的 \(borde…
BZOJ5372: [Pkusc2018]神仙的游戏 https://lydsy.com/JudgeOnline/problem.php?id=5372 分析: 如果\(len\)为\(border\),那么\(n-len\)为周期,问题转化为周期. 我们知道如果\(len\)不是周期,那么其约数\(d\)也不是周期. 然后我们发现如果求周期的话,\(?\)是无意义的. 一个\(?\)不合法(同时有两个字符)的条件是\(0\rightarrow?\;\; ?\rightarrow? ... ?\…
Portal --> pkuscD2T2(loj6436) Solution 个人觉得是道很好的法法塔题qwq 一开始的时候想偏了想到了另一种法法塔处理字符串匹配之类的奇怪技巧(万径人踪灭qwq了解一下),然后非常天真的想把问号拿出来单独处理一波然后越走越远... 好吧正解其实是(感觉貌似还是想的有点绕?应该有更加简便的思维方式不过qwq不管了qwq) 因为有一个问号所以其实挺难直接得到哪些长度能够匹配,那不妨换个思路把所有肯定不能匹配的长度去掉那剩下的就是答案了 肯定不能匹配的长度显然就是\(…
题目分析: 题目要求前后缀相同,把串反过来之后是一个很明显的卷积的形式.这样我们可以完成初步判断(即可以知道哪些必然不行). 然后考虑一下虽然卷积结果成立,但是存在问号冲突的情况. 箭头之间应当不存在1.不然就和图上所画的一样.注意到它每隔len个跳一次,所以相当于调和级数,利用原有信息判断即可. 字符串转化的方式有很多种. 代码: #include<bits/stdc++.h> using namespace std; <<)+; ; ; char str[maxn]; ],b[…
loj description 给你一个只有01和?的字符串,问你是否存在一种把?改成01的方案使串存在一个长度为\(1-n\)的\(border\).\(n\le5\times10^5\) sol 这种题都不会我还是太菜了. 有一档部分分是"01的个数不超过\(5000\)".这个其实对正解的提示是蛮大的. 有一个显然的结论:存在一个长度为\(len\)的\(border\)当且仅当对于\(\forall i\in[1,len]\) 有 \(s[i]=s[n-len+i]\).(感谢…
$|S| \le 5 \times 10^5$ 题解 这题直接用通配符匹配的套路会错,因为重复部分的$?$可能同时被当做了$0$和$1$ 有长度为$i$的公共前缀后缀等价于有长度为$n-i$的循环节: 对于循环节$d$,只需要知道对于任意的$d|i-j$,是否存在$(s[i]='0'且s[j]='1') 或 (s[j]='0'且s[i]='1')$ 构造函数:$A(x) = s[x]=='0' , B(x) = s[n-1-x]=='1' $ 可以通过计算多项式$A \times B$判断$d=…
传送门 思路 首先通过各种手玩/找规律/严谨证明,发现当\(n-i\)为border当且仅当对于任意\(k\in[0,i)\),模\(i\)余\(k\)的位置没有同时出现0和1. 换句话说,拿出任意一个1的位置\(x\),一个0的位置\(y\),那么对于\(|x-y|\)的所有约数\(i\),\(n-i\)均不合法. 考虑用NTT优化这个过程:记两个多项式\(A(x),B(x)\).若\(s_i=0\)则\([x^i]A(x)=1\):若\(s_i=1\)则\([x^{n-i}]B(x)=1\)…