「PKUSC2018」神仙的游戏】的更多相关文章

题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 这样做 . 把通配符设成 \(0\) 然后 . 别的按 \(\mathrm{ASCII}\) 码 给值 , 最后把他写成式子的形式 ... 后来发现太年轻了 qwq 先要做这题 , 那么先发现性质咯 : 存在一个长度为 \(len\) 的 \(border\) 当且仅当对于 \(\forall i…
题意 链接 Sol 生成函数题都好神仙啊qwq 我们考虑枚举一个长度\(len\).有一个结论是如果我们按\(N - len\)的余数分类,若同一组内的全为\(0\)或全为\(1\)(?不算),那么存在一个长度为\(len\)的border. 有了这个结论后我们考虑这样一种做法:把序列看成两个串\(a, b\),若\(a_i = 0, b_j = 1\),那么对于所有的\(k | (|i - j|)\), \(N-k\)都不会成为答案. 考虑怎么快速算不合法的\((i, j)\).对于多项式乘法…
题目链接 比如说上面\(|S|\)为12的字符串,我们欲求出\(f(9)\)的值,那么上面相同颜色的字符必须两两能够匹配.也就是说,同种颜色的字符集里不能同时出现0和1.如果只考虑同种颜色集里相邻的两个字符能否匹配,那么小样例都过不了.. 我们仔细观察就会发现,每隔\(|S|-len\)的位置就会出现相同的字符.我们可以认为长度为\(len\)的border实质上就是将长度为\(len\)的前缀向后偏移\(|S|-len\),看是否能匹配. 如果有两个字符\(s[i],s[j]\ (i<j)\)…
题解 感觉智商为0啊QAQ 显然对于一个长度为\(len\)的border,每个点同余\(n - len\)的部分必然相等 那么我们求一个\(f[a]\)数组,如果存在\(s[x] = 0\)且\(s[y] = 1\)且\(|x - y| = a\) 这个很好求,只要把0和1分别挑出来,NTT卷一下就好了 一个\(len\)合法,即它的\(n - len\)的倍数\(k\),\(f[k]\)都等于0 代码 #include <bits/stdc++.h> #define fi first #d…
题目分析 通过画图分析,如果存在border长度为len,则原串一定是长度为n-len的循环串. 考虑什么时候无法形成长度为len的循环串. 显然是两个不同的字符的距离为len的整数倍时,不存在这样的循环串. 怎么求出两两不同的字符的距离呢? 翻转一下字符串做卷积即可.…
题面 传送门 题解 一旦字符串踏上了通配符的不归路,它就永远脱离了温暖的字符串大家庭的怀抱 用人话说就是和通配符扯上关系的字符串就不是个正常的字符串了比如说这个 让我们仔细想想,如果一个长度为\(len\)的前缀是border,那么对于\(\forall i\in[1,len]\),都有\(s[i]=s[i+n-len]\),也就是说在模\(n-len\)意义下所有位置上的\(01\)要相等 如果有一个\(0\)位置\(i\),一个\(1\)位置\(j\),记\(x=|i-j|\),那么所有\(…
传送门 思路 首先通过各种手玩/找规律/严谨证明,发现当\(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\)…
题目:https://loj.ac/problem/6436 看题解才会. 有长为 i 的 border ,就是有长为 n-i 的循环节. 考虑如果 x 位置上是 0 . y 位置上是 1 ,那么长度是 | x-y | 的约数的循环节都不可行,因为在该循环节中, x 和 y 处在 “应该相等” 的地位. 最后一个部分分是暴力枚举 0 和 1 来预处理出一个 h[ i ] 表示长度是 i 的约数的循环节不可行.然后枚举循环节的长度 i ,再枚举 i 的倍数看看有没有 “不可行” 的.这样是 nlo…
[LOJ#6437][BZOJ5373]「PKUSC2018」PKUSC 试题描述 九条可怜是一个爱玩游戏的女孩子. 最近她在玩一个无双割草类的游戏,平面上有 \(n\) 个敌人,每一个敌人的坐标为 \(x_i,y_i\).可怜有一个技能是在平面上画一个 \(m\) 个点的简单多边形,并消灭所有严格在多边形内部的敌人. 不难发现如果想要快速的消灭敌人的话,只要画一个足够大的简单多边形就行了.但是这样的游戏性就太差了.于是可怜打算为游戏增加一定的随机性. 可怜在平面上随便画了一个 \(m\) 个点…
题面 LOJ#6435. 「PKUSC2018」星际穿越 题解 参考了 这位大佬的博客 这道题好恶心啊qwq~~ 首先一定要认真阅读题目 !! 注意 \(l_i<r_i<x_i\) 这个条件 !! 所以它询问的就是向左走的最短路了 . 不难发现只有两种策略 , 要么一直向左走 ; 要么第一次向右走 , 然后一直向左走 . 并且到一个定点 \(x\) 的最短路长度 肯定是从右向左一段段递增的 . 为什么呢 ? 不难发现 如果向右走两次 , 那么只有一次是一定有效的 , 另外一次的 \(l_i\)…