bzoj3790】的更多相关文章

[BZOJ3790]神奇项链 Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和一个字符串的前缀是完全相同的,那么可以将这个重复部分重叠.例如:aba和aca连接起来,可以生成串abaaca或 abaca.现在给出目标项链的样式,询问…
题意: 思路:生成一些回文拼起来使生成的段数最小 显然存在一种最优的方案,使生成的那些回文是目标串的极长回文子串 求出对于每个位置的最长回文子串,问题就转化成了: 给定一些已知起始和终止位置的线段,求覆盖住整个区域的最小线段数量 这个可以BIT做,求当前已经覆盖的区域最远能拓展到哪里 也可以预处理一下前缀最小值,跳转时直接调用即可 ; ..]of longint; len,n,i,id,mx,ans,m:longint; ch:ansistring; function lowbit(x:long…
3790: 神奇项链 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 304  Solved: 150[Submit][Status][Discuss] Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个…
Manacher求出所有极长回文子串后,得到一堆线段,转化成线段覆盖问题 预处理出g[i]表示左端点不超过i的右端点的最大值 贪心地线段覆盖即可 时间复杂度$O(n)$ #include<cstdio> #include<cstring> #include<algorithm> #define N 100010 using namespace std; char a[N],s[N];int n,m,f[N],i,j,r,p,ans,g[N],x,y; int main(…
观察发现,这道题目其实就相当于一个最小区间覆盖问题这里的区间是指以每个点为中心的最长回文串很久没写manacher,有点感动不得不说manacher是一个非常好的算法 ..] of char; c,l,r,f,p:..] of longint; i,j,t,n,m,ans,k,right:longint; ch:char; procedure swap(var a,b:longint); var c:longint; begin c:=a; a:=b; b:=c; end; function m…
题目描述 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和一个字符串的前缀是完全相同的,那么可以将这个重复部分重叠.例如:aba和aca连接起来,可以生成串abaaca或 abaca.现在给出目标项链的样式,询问你需要使用第二个机器多少次才能生成这个特殊的…
Description 母亲节就要到了,小 H 准备送给她一个特殊的项链.这个项链可以看作一个用小写字 母组成的字符串,每个小写字母表示一种颜色.为了制作这个项链,小 H 购买了两个机器.第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和一个字符串的前缀是完全相同的,那么可以将这个重复部分重叠.例如:aba和aca连接起来,可以生成串abaaca或 abaca.现在给出目标项链的样式,询问你需要使用第二个机器多少次才能…
浅谈\(Manacher\):https://www.cnblogs.com/AKMer/p/10431603.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=3790 问题就是求用多少个回文子串可以覆盖整个原串. 把回文子串的一个个区间\([l,r]\)拎出来,按\(l\)为第一关键字\(r\)为第二关键字从小到大排序. 设\(mx\)是已经扫过的区间\(r\)的最大值.\(tmp\)表示我再接上一个回文子串可以到达的下一个\(r…
紧跟jk大佬的步伐 这道题哇 因为机器一能生成回文串 所以我们只要用manacher跑一遍求出q[i]这样就把问题转化成了类似线段覆盖的题目 贪心就好了 至于,BIT优化dp我不会所以直接贪心了 注意答案是所需线段减一 因为是合并两条需要一次二机器 当然我ans(答案)直接初始化了0 懒得减一了 剩下的看代码吧 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ch…
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=39091399 (CSDN好像有bug,不知道为什么存的草稿覆盖了之前的博客>.<,以后再也不存线上草稿了) 昨天学了马拉车(manacher)算法,今天做了一道例题.虽然并不难,但还是写一写博客,即为民服务,又加深自己的理解. manacher是高效处理回文串的算法,不过因为只限求回文串,所以适用范围就窄了,但是它仍然有用,所以还是要学. 首先…