loj6387 「THUPC2018」绿绿与串串 / String
还是很好做的,大致就是manacher,每个位置为中心的最长回文串要是能抵到最右边就合法,要是能抵到最左边,那这个点的是否合法取决于以这个点为中心的最长回文串的右端点是否合法。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
int T, n, r[2000005], len;
bool iso[1000005];
char ss[2000005];
vector<int> vec;
int main(){
	cin>>T;
	while(T--){
		scanf("%s", ss);
		n = strlen(ss);
		len = 2 * n + 1;
		for(int i=n; i>=0; i--){
			ss[2*i+2] = ss[i];
			ss[2*i+1] ='#';
		}
		ss[0] = '$';
		len = 2 * n + 1;
		int id=0, mx=0;
		for(int i=1; i<len; i++){
			if(i<mx)	r[i] = min(r[2*id-i], mx-i);
			else	r[i] = 1;
			while(ss[i-r[i]]==ss[i+r[i]])	r[i]++;
			if(i+r[i]>mx)	mx = i + r[i], id = i;
		}
		vec.clear();
		for(int i=n-1; i>=0; i--){
			iso[i] = false;
			int tmp=r[(i+1)*2]/2;
			if(i+tmp==n)	iso[i] = true;
			if(i-tmp+1==0)	iso[i] = iso[i+tmp-1];
			if(iso[i])	vec.push_back(i+1);
		}
		for(int i=vec.size()-1; i>=0; i--)
			printf("%d ", vec[i]);
		printf("\n");
	}
	return 0;
}
												
											loj6387 「THUPC2018」绿绿与串串 / String的更多相关文章
- 【LibreOJ】#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop   线段树+完全背包
		
[题目]#6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop [题意]给定一个长度为n的物品序列,每个物品有价值.不超过m的重量.要求支持以下三种操作:1.物品价值区间加减,2.物 ...
 - 【LibreOJ】#6392. 「THUPC2018」密码学第三次小作业 / Rsa   扩展欧几里得算法
		
[题目]#6392. 「THUPC2018」密码学第三次小作业 / Rsa [题意]T次询问,给定正整数c1,c2,e1,e2,N,求正整数m满足: \(c_1=m^{e_1} \ \ mod \ \ ...
 - 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City   背包DP+Prufer序
		
[题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...
 - LOJ#6387 「THUPC2018」绿绿与串串 / String (Manacher || hash+二分)
		
题目描述 绿绿和 Yazid 是好朋友.他们在一起做串串游戏. 我们定义翻转的操作:把一个串以最后一个字符作对称轴进行翻转复制.形式化地描述就是,如果他翻转的串为 RRR,那么他会将前 ∣R∣−1个字 ...
 - [loj6388] 「THUPC2018」赛艇 / Citing
		
Description  给你一个\(~n \times m~\)的\(~01~\)矩阵,一个人在这个矩阵中走了\(~k~\)步,每一次都往四联通方向中的一个走一步.给定这个人每一步走的方向,已知这 ...
 - 「THUPC2018」赛艇 / Citing
		
https://loj.ac/problem/6388 矩形匹配,小地图经过位置为1,和大地图匹配不能同时存在一个1的位置,就可以是一个当前位置 1.bitset压位,....O(n^2m^2/64) ...
 - 【LOJ】#6391. 「THUPC2018」淘米神的树 / Tommy
		
题解 一道非常神仙的计数题 如果只有一个点,就是非常简单的树型dp \(f_{u} = (siz_{u} - 1)! \prod_{v \in son_{u}} \frac{f_{v}}{siz_{v ...
 - loj6392 「THUPC2018」密码学第三次小作业 / Rsa
		
还是挺好做的,\((e_1,e_2)=1 \Rightarrow e_1s+e_2t=0\),\(m \equiv m^1 \equiv m^{e_1s+e_2t} \equiv c_1^s c_2^ ...
 - 【LOJ6397】「THUPC2018」蛋糕 / Cake(搜索)
		
点此看题面 大致题意: 把一个\(a\times b\times c\times d\)的\(4\)维图形划分成\(a\times b\times c\times d\)个小块,求有\(0\sim8\ ...
 
随机推荐
- 添加SAP_ALL权限
			
更新usr04,ust04,usrbf2这三张表 REPORT ZTESTCREATEUSER. data: l_USR04 LIKE USR04 , l_UST04 LIKE UST04 , l_P ...
 - 利用BandwagonHost***便宜Linux VPS安装VNC(远程桌面)- 安装篇
			
如果我们有搭建过网站,或者用过VPS.服务器,肯定会看到最近几年主机市场竞争还是比较激烈的.尤其是VPS.服务器的价格走低,很多商家价格厮杀的厉害,甚至出现年付几美元的VPS.便宜VPS固然是好事,我 ...
 - coursera 算法二 week 1 wordnet
			
这周的作业可谓是一波三折,但是收获了不少,熟悉了广度优先搜索还有符号图的建立.此外还知道了Integer.MAX_VALUE. SAP: 求v和w的大概思路是对v和w分别广度优先搜索,然后遍历图中每一 ...
 - linux 命令——9  touch (转)
			
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 1.命令格式: touch [选项]... 文件... 2.命令参数: -a ...
 - 倍增LCA
			
前言 在做树上问题时,我们经常会遇到 \(LCA\)(最近公共祖先)问题.曾经的我遇到这类问题只会\(O(n)\)暴力求解,学了倍增\(LCA\),就可以\(O(logn)\)解决了. 简介 倍增\( ...
 - python 基础之列表切片内置方法
			
列表操作 c=['cx','zrd','ajt','dne'] #定义一个列表,有4个元素 #增删改查 print(c[3]) #从0计数 测试 D:\python\python.exe D:/unt ...
 - javascript同步和异步的区别与实现方式
			
javascript语言是单线程机制.所谓单线程就是按次序执行,执行完一个任务再执行下一个. 对于浏览器来说,也就是无法在渲染页面的同时执行代码. 单线程机制的优点在于实现起来较为简单,运行环境相对简 ...
 - 8--oop
			
oop-Python面向对象 Python的面向对象 面向对象编程 基础 共有私有 继承 组合,Mixin 魔法函数 魔法函数概述 构造类魔法函数 运算类魔法函数 1.面向对象概述(ObjectOri ...
 - java编程基础——二叉树的镜像
			
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 题目代码 /** * @program: JavaCode * @description: 操作给定的二叉树,将其变换为源二叉树的镜像. * 二 ...
 - React后台管理系统-table-list组件
			
table-list组件可用于商品列表,用户列表页面 需要传入一个tableHeads集合和tablebody import React from 'react'; // 通用的列表 class ...