正解:$manacher$

解题报告:

传送门$QwQ$

考虑这个操作的实质是啥$QwQ$?其实就,变成以最后一个节点为回文中心的回文子串嘛$QwQ$.显然就先跑个马拉车再说呗$QwQ$.

然后接着考虑,最容易考虑到的是操作一次后长度大于等于$|S|$的,就只需这个位置的回文半径已经顶着右边界了.

然后对于要操作多次的,仔细思考下发现,只需要回文半径顶着左边界且操作一次之后的位置可行就行

然后就做完了$QwQ$

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define il inline
  4. #define gc getchar()
  5. #define ri register int
  6. #define rc register char
  7. #define rb register bool
  8. #define rp(i,x,y) for(ri i=x;i<=y;++i)
  9. #define my(i,x,y) for(ri i=x;i>=y;--i)
  10.  
  11. const int N=1e6+10;
  12. int p[N<<1],len;
  13. bool f[N<<1];
  14. char str[N<<1];
  15.  
  16. il int read()
  17. {
  18. rc ch=gc;ri x=0;rb y=1;
  19. while(ch!='-' && (ch>'9' || ch<'0'))ch=gc;
  20. if(ch=='-')ch=gc,y=0;
  21. while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=gc;
  22. return y?x:-x;
  23. }
  24. il void manacher()
  25. {
  26. str[0]='*';str[len=1]='|';rc ch=gc;while(ch<'a' || ch>'z')ch=gc;
  27. while(ch<='z' && ch>='a')str[++len]=ch,str[++len]='|',ch=gc;;str[++len]='#';
  28. for(ri i=1,mx=0,mid=0;i<=len;++i)
  29. {
  30. if(mx>=i)p[i]=min(mx-i+1,p[(mid<<1)-i]);
  31. while(str[i-p[i]]==str[i+p[i]])++p[i];;if(i+p[i]-1>mx)mx=i+p[i]-1,mid=i;
  32. }
  33. }
  34.  
  35. int main()
  36. {
  37. freopen("5446.in","r",stdin);freopen("5446.out","w",stdout);
  38. ri T=read();
  39. while(T--)
  40. {
  41. memset(f,0,sizeof(f));memset(p,0,sizeof(p));manacher();
  42. //rp(i,1,len-1)printf("%c",str[i]);;printf("\n");
  43. //rp(i,1,len-1)if(!(i&1))printf(" %d",p[i]);;printf("\n");
  44. //rp(i,1,len-1)if(!(i&1))printf(" %d",i>>1);;printf("\n");
  45. my(i,len,2){if(i+p[i]==len || (i-p[i]+1==1 && f[i+p[i]-2]))f[i]=1;}
  46. for(ri i=2;i<len;i+=2)if(f[i])printf("%d ",i>>1);;printf("\n");
  47. }
  48. return 0;
  49. }

洛谷$P5446\ [THUPC2018]$绿绿和串串 $manacher$的更多相关文章

  1. [题解] Luogu P5446 [THUPC2018]绿绿和串串

    [题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,..., ...

  2. 【题解】P5446 [THUPC2018]绿绿和串串(manacher)

    [题解]P5446 [THUPC2018]绿绿和串串(manacher) 考虑对于一个串进行\(f\)操作,就是让他变成一个以最后一个节点为回文中心的回文串. 那么对于某个位置\(p\),假如它是一个 ...

  3. LOJ#6387 「THUPC2018」绿绿与串串 / String (Manacher || hash+二分)

    题目描述 绿绿和 Yazid 是好朋友.他们在一起做串串游戏. 我们定义翻转的操作:把一个串以最后一个字符作对称轴进行翻转复制.形式化地描述就是,如果他翻转的串为 RRR,那么他会将前 ∣R∣−1个字 ...

  4. [NOIP2013 提高组] 华容道 P1979 洛谷

    [NOIP2013 提高组] 华容道 P1979 洛谷 强烈推荐,更好的阅读体验 经典题目:spfa+bfs+转化 题目大意: 给出一个01网格图,和点坐标x,y空格坐标a,b,目标位置tx,ty要求 ...

  5. 3150luogu洛谷

    若说代码 那真的是很水 但是 思想却有点意思 这道题是洛谷博弈论专题的第一道入门题, 然而刚开始我是不会做的, 毕竟是道入门题, 我博弈论还没入门呢. 这道题的做法就是: 如果m为偶数, 那么先手赢( ...

  6. P1219 八皇后 洛谷

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  7. P1075,P1138(洛谷)

    今天难得做了做洛谷的题,而且还是两个! P1075:已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数.输入格式:一个正整数n.输出格式:一个正整数p,即较大的那个质数. 第一版代码: # ...

  8. Cube Stacking 来源:洛谷

    题目 题目oj(洛谷) Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ...

  9. P1137 旅行计划-----洛谷

    用了STL,其他的没什么,赤裸裸的拓扑排序 下面给出代码 #include<cstdio> #include<iostream> #include<vector> ...

随机推荐

  1. 微信小程序 mode 的几种模式

    mode="aspectFill" mode 有效值: mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式. 模式 值 说明缩放 scaleToFill 不保持纵 ...

  2. Remove Extra One 权值线段树

    最近疯狂练习线段树... 这道题题意很简单,在1-n中,找寻一个数,使得去掉这个数后,对于每个位置中满足 1<=j<i && a[ j ]<a[ i ] 的位置尽可能 ...

  3. 开源CMS比较

    PHP-CMS的发展方向:简单,易用,美观  http://www.php-cms.cn/ 看点1,服务器一键安装,鼠标点点就搞定:输入数据库参数,在服务器上点一个按钮就完成全部的安装.简单配置一下网 ...

  4. 以P2P网贷为例互联网金融产品如何利用大数据做风控?

    以P2P网贷为例互联网金融产品如何利用大数据做风控?   销售环节 了解客户申请意愿和申请信息的真实性:适用于信贷员模式. 风控关键点 亲见申请人,亲见申请人证件,亲见申请人签字,亲见申请人单位. 审 ...

  5. gradle 生成 pom,引用mybatis-plus源代码到自己的工程中

    一 前情概要 自己的maven工程使用mybatis-plus,然后想用热部署加载mapping文件.经过各种探索之后实现了,但是修改了xml文件后,就不断在控制台提示“mapper xxx is i ...

  6. H3C 收敛速度慢

  7. H5 FileReader读取文件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Python--day38---进程间通信--初识队列(multiprocess.Queue)

    初识队列: 进程间通信IPC(Inter-Process Communication) 1,队列的方法: q = Queue(5)1,q.put(1) #把1放进队列 2,print(q.full() ...

  9. H3C 路由环路

  10. http header详解,HTTP头、请求头、响应头、实体头

    Content-Language,Content-Length,Content-Type,Content-Encoding,mime分析 Accept 指定客户端能够接收的内容类型 Accept:te ...