luogu P3279 [SCOI2013]密码】的更多相关文章

LINK:密码 给出来manacher的数组 让还原出字典序最小的字符串.字符集为小写字母. 当没有任何限制时 放字典序最小的'a'.如果此时还在最长的回文串中的话那么 直接得到当前字符即可. 注意这个过程要在上次放过的位置之后放 不能暴力放 暴力放是n^2的 确定位置跟原来的manacher是一致的. 最困难的是 当前位置不确定 前面那个也同时超出了前面串的回文半径. 随便加一个字符显然可能会出现错误.但是考虑到一个串的回文半径做完之后 当前位置不能和这个串之前的第一个字符相同 我们把这个东西…
[BZOJ3325][Scoi2013]密码 Description Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息: 1. 该密码的长度为N. 2. 密码仅含小写字母. 3. 以每一个字符为中心的最长回文串长度. 4. 以每两个相邻字符的间隙为中心的最长回文串长度. 很快Fish 发现可能有无数种满足条件的密码.经过分析,他觉得这些密码中字典序最小的一个最有可能是…
关于$\mathrm{Manacher}$算法,网上介绍已经很全面 这里说一下自己的理解 这里的$rad$数组:$rad_i$表示以以位置i为中心的最长回文串的回文半径(不包括i这个点). 朴素的思想大概是从每个点出发像两边扩展,大概$O(n^2)$复杂度?据说$\mathrm{Manacher}$是$O(n)$的(不会证,Orz,大概因为每个位置只会被暴力扩展$O(1)$次)这是因为回文串有对称性,我们可以利用这点来优化算法.现在假设我们已经得到了$i$和$i$以前的$rad$值,现在想直接通…
Description Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息: 该密码的长度为N. 密码仅含小写字母. 以每一个字符为中心的最长回文串长度. 以每两个相邻字符的间隙为中心的最长回文串长度. 很快Fish 发现可能有无数种满足条件的密码.经过分析,他觉得这些密码中字典序最小的一个最有可能是答案,你能帮他找到这个密码么? 注意:对于两个串A和B,如果它们的前i…
题目描述 给出一个只包含小写字母的字符串的长度.以每一个字符为中心的最长回文串长度.以及以每两个相邻字符的间隙为中心的最长回文串长度,求满足条件的字典序最小的字符串. 输入 输入由三行组成.第一行仅含一个整数N,表示密码的长度.第二行包含N 个整数,表示以每个字符为中心的最长回文串长度.第三行包含N - 1 个整数,表示每两个相邻字符的间隙为中心的最长回文串长度.1 <= n <= 10^5. 输出 输出仅一行.输出满足条件的最小字典序密码.古籍中的信息是一定正确的,故一定存在满足条件的密码.…
题目 Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息: 该密码的长度为N. 密码仅含小写字母. 以每一个字符为中心的最长回文串长度. 以每两个相邻字符的间隙为中心的最长回文串长度. 很快Fish 发现可能有无数种满足条件的密码.经过分析,他觉得这些密码中字典序最小的一个最有可能是答案,你能帮他找到这个密码么? 注意:对于两个串A和B,如果它们的前i个字符都相同,而A…
题目描述: Fish是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进. 通过翻阅古籍,Fish 得知了这个密码的相关信息: 该密码的长度为N. 密码仅含小写字母. 以每一个字符为中心的最长回文串长度. 以每两个相邻字符的间隙为中心的最长回文串长度. 很快Fish 发现可能有无数种满足条件的密码.经过分析,他觉得这些密码中字典序最小的一个最有可能是答案,你能帮他找到这个密码么? 注意:对于两个串A和B,如果它们的前i个字符都相…
https://www.luogu.org/problemnew/show/P1928 沙比提 读清题目 #include <bits/stdc++.h> using namespace std; ; int pre[N], hou[N]; string s; string ss; int main() { cin >> s; ) { cout << s; ; } ; T <= ; T ++){ ) s = ss; int len = s.length(), la…
应该没什么用的题目链接 题目背景 关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY.若KEY=∑▒[Ai*Bi],则密文就是原文的一组合法密码. 题目描述 现在有原文和钥匙码,请编一个程序来帮助他统计到底有多少个符合条件的密文. 输入输出格式 输入格式: 第一行两个数N,KEY,意义同题目描述: 第二行N个数表示原文A,意义同题目描述. 输出格式: 一个数ANS,表示对于原文A和KEY,有多少组可行的密文B. 输入输…
从以每一位为中心的回文串长度可以用Manacher倒推出$O(n)$对相等和不等关系. 将相等的用并查集维护,不等的连边. 然后输出方案时若还没被染过色,则求一个mex. #include<cstdio> #define N 200010 int n,m,i,x,r,p,f[N],g[N],fa[N],a[N],v[30]; struct E{int v;E*nxt;}*j,*h[N],pool[N*2],*cur=pool; inline int min(int a,int b){retur…