【Manacher】绿绿和串串(luogu 5446)

正题

luogu 5446


题目大意

定义对折为:以最后一个字符为对称轴翻转

问你一个字符串可能是由那些前缀对折若干次而来的


解题思路

先用Manacher求出回文长度

那么满足以下条件之一的前缀就是可行方案

  1. 最后一个字符的回文长度加上它的位置为n(后面若干字符和前面满足回文)

  2. 最后一个字符回文长度等于该字符串的长度,且对折后形成的字符串是可行方案


代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 1000010
using namespace std;
int t, n, s[N], l[N], p[N];
string str;
void Manacher()
{int mx = 0, mid = 0;for (int i = 1; i <= n; ++i){if (i < mx) l[i] = min(l[mid * 2 - i], mx - i);else l[i] = 1;while(s[i + l[i]] == s[i - l[i]]) l[i]++;if (i + l[i] > mx){mx = i + l[i];mid = i;}}return;
}
int main()
{scanf("%d", &t);while(t--){cin>>str;n = str.size();s[0] = '#';for (int i = 1; i <= n; ++i)s[i] = str[i - 1];s[n + 1] = 0;Manacher();memset(p, 0, sizeof(p));for (int i = n; i > 0; --i)if (i + l[i] > n || p[i + l[i] - 1] && l[i] == i)//满足条件p[i] = 1;for (int i = 1; i <= n; ++i)if (p[i])printf("%d ", i);putchar(10);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用.Net Core实现FNV分布式hash一致性算法

说到FNV哈希算法不得不提Memcached&#xff0c;我们先简单介绍一下Memcached。MemcachedMemcached分为客户端与服务端&#xff0c;Memcached是服务端&#xff0c;服务端本身不提供分布式实现&#xff0c;只是一个单独的k-v缓存&#xff1b;Memcached的分布式是在客户端类库中实…

一起开心暑假集训第一周限时训练 2020/7/5

文章目录A - Goldbachs Conjecture POJ - 2262B - 同余方程 计蒜客 - T2010C - Tr A HDU - 1575D - C Looooops POJ - 2115vjudge试题集链接 A - Goldbach’s Conjecture POJ - 2262 试题链接&#xff1a; 线性筛先预处理&#xff0c;然后判断就行 #include<iostream>…

P5631-最小mex生成树【线段树,并查集】

正题 题目链接:https://www.luogu.com.cn/problem/P5631 题目大意 nnn个点mmm条边的一张图&#xff0c;求mexmexmex值最小的一棵生成树。 解题思路 考虑比较暴力的做法&#xff0c;枚举答案&#xff0c;然后判断其他边能否构成一棵生成树。 发现一条边会被重复加入多次&…

【Manacher】【贪心】字符串连接(金牌导航 Manacher-4)

正题 金牌导航 Manacher-4 题目大意 给出一个字符串&#xff0c;让你用最少的回文串连接得到该串&#xff08;这里连接是可以有重合的&#xff09; 解题思路 先用Manacher求出以x为左端点的回文串右端点最大的位置 然后在当前回文串中贪心求下一回文串的右端点 代码 #incl…

[XSY4197] Snow(树形DP)

我们在树上的每个点iii上放aia_iai​个小点&#xff0c;初始时先让每个点单独减&#xff0c;这样要花费aia_iai​之和的次数。 然后尝试把某些减合并。一个点上面的小点至多可以向两个相邻的小点连边&#xff08;这两个小点不能在同一个点上&#xff09;。每连一条边&#xff…

Followme Devops实践之路

引言天下武功,唯快不破想要提高开发团队效率&#xff0c;势必要有一套完整而成熟的开发流程方案&#xff0c;除了sprint迭代开发模式之外,还有近几年流行的devops流程,都是可以大幅度提高开发效率的工具. 我们团队也不断探索、实践&#xff0c;最终形成了现有的一套体系&#x…

【每日一题】6月30日 Growth

来源&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 1048576K&#xff0c;其他语言2097152K 64bit IO Format: %lld文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 弱弱有两个属性a和b&#xff0c;这两个属性初始的时…

P5445-[APIO2019]路灯【set,树状数组套线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P5445 题目大意 n1n1n1个点&#xff0c;iii和i1i1i1个点之间有一条边&#xff0c;qqq个操作 断开/连接第xxx和x1x1x1之间的边询问目前为止aaa和bbb点在多少个操作后是联通的&#xff08;包括开始前&#xff09; 解题思路 粗…

【dfs】【hash】有趣的英语角(2015特长生 T2/luogu 1019)

正题 luogu 1019 题目大意 给你若干个词语&#xff0c;让你把他们连起来&#xff08;重复段叠在一起&#xff09;&#xff0c;每个词语最多用两次&#xff0c;问你该串最长是多少 解题思路 dfs枚举一个单词后面接哪个单词&#xff0c;然后枚举重叠长度&#xff0c;再用hash判…

基环树小记

概念 基环树就是有n个点n条边的图&#xff08;比树多出现一个环&#xff09;。 特殊形态的基环树 无向树(N点N边无向图) 外向树(每个点只有一条入边) 内向树(每个点只有一条出边) 以上三种树有十分优秀的性质&#xff0c;就是可以直接将环作为根。就可以对每个环的子树进行单…

【每日一题】7月1日题目精讲 借教室

来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld文章目录题目描述题解&#xff1a;差分&#xff1a;二分&#xff1a;整合代码&#xff1a;题目描述 在大学期…

利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能

事由&#xff1a;这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别。顺带提一下&#xff1a;啊啊啊啊 等我仔细看文档的时候文档 发现它让我用Release的模式去运行benchmark。 emmm...其实我之前一直在用Debug模…

CF280C-Game on Tree【数学期望】

正题 题目链接:https://www.luogu.com.cn/problem/CF280C 题目大意 nnn个点的一棵树&#xff0c;每次选择一个没有染色的点把它和它的子树染黑&#xff0c;求期望全部染黑的步数。 解题思路 可以理解为我们按照一个顺序轮流染色&#xff0c;如果一个点有祖先节点在它前面就不…

糊涂的教授(2015特长生 T3)

题目大意 平面上有n个矩阵&#xff0c;和n个数字&#xff0c;对于每个矩阵选择矩阵内的一个数字作为编号&#xff0c;让你给出唯一方案&#xff0c;使每个数字只作为一个矩阵的编号&#xff08;多种方案即为不可行的&#xff09; 解题思路 因为多种方案是不可行的&#xff0c…

MATLAB线性规划相关函数用法

一.线性规划的Matlab标准形式及软件求解 1. MATLAB中规定线性规划的标准形式为 其中c和 x为n 维列向量&#xff0c; A、 Aeq 为适当维数的矩阵&#xff0c;b 、beq为适当维数的列向量。 &#xff08;Aeq 对应约束条件中等式约束的系数矩阵&#xff0c;A为约不等式约束的系数矩…

势能线段树(均摊分析)

势能线段树 线段树能够通过打懒标记实现区间修改的条件有两个&#xff1a; 能够快速处理懒标记对区间询问结果的影响能够快速实现懒标记的合并 但有的区间修改不满足上面两个条件&#xff08;如区间整除/开方/取模等&#xff09;。 但某些修改存在一些奇妙的性质&#xff0c…

.NET Core 出得云端入得本地,微软让跨平台应用勇敢表达

地铁公交的上班路上、咖啡馆里等人的时候&#xff0c;这些碎片化时间都是现代人学习和充电的机会&#xff0c;根据第42次CNNIC中国互联网发展状况统计报告&#xff0c;截至2018年6月&#xff0c;网络文学用户规模已达4.06亿&#xff0c;占网民总体50.6%&#xff1b;手机网络文学…

【每日一题】7月3日精讲—毒瘤xor

【每日一题】7月3日精讲—毒瘤xor 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K Special Judge, 64bit IO Format: %lld文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 输入描述: 第一行一个整…

【DP】集合问题(2015特长生 T4/luogu 1466)

正题 luogu 1466 题目大意 给你1~n的一个集合&#xff0c;问你有多少种方案把该集合分成两个集合&#xff0c;且两集合的数字之和相等 解题思路 设fi,jf_{i,j}fi,j​为放好i个数且集合1的和比集合2的和大j的方案书 那么对于第i个放到两个集合中&#xff0c;分别从fi−1,j−…

P5212-SubString【LCT,SAM】

正题 题目链接:https://www.luogu.com.cn/problem/P5212 题目大意 开始一个字符串SSS&#xff0c;有nnn次操作 在SSS末尾加入一个字符串询问一个串在SSS中出现了多少次 强制在线 解题思路 强制在线的话&#xff0c;只有SAM\text{SAM}SAM能够支持动态插字符了&#xff0c;但…