首页 > 其他分享 >ptaL2-008manachar做法

ptaL2-008manachar做法

时间:2024-03-20 18:35:58浏览次数:19  
标签:cnt string int len ss ptaL2 做法 008manachar

之前考虑过如果输入样例很大怎么办,但是没有细想,今天看了看manachar,懊悔如果这个题样例增大一些变成L3 30分就好了hh,相比于洛谷上的模板题,这个题唯一不一样的就是有空格,所以不能再用char数组来保存,改用string来存储,C++中的getline 函数前几天刚了解到正好也派上用场了



const int N=1e6+10;
int t;
string s;
string ss;
int ans,len;
int d[N];
int cnt;
void init()
{
	len=s.length();
	cnt=1;
	ss+='@';
	ss+='&';
	for(int i=0;i<len;i++)
	{
		ss+=s[i];
		ss+='&';
	}
}
void manachar()
{
	d[1]=1;
	for(int i=2,r=1,l;i<=ss.length();i++)
	{
		if(i<=r) d[i]=min(d[r-i+l],r-i+1);
		while(ss[i-d[i]]==ss[i+d[i]]) d[i]++;
		if(r<=i+d[i]-1) r=i+d[i]-1,l=i-d[i]+1;
		ans=max(ans,d[i]-1);
	}
}
void solve()
{
	getline(cin,s);
	init();
	manachar();
	cout<<ans;
	return;
}
int main()
{
	solve();
	return 0;
}
`

标签:cnt,string,int,len,ss,ptaL2,做法,008manachar
From: https://www.cnblogs.com/marshuo/p/18085827

相关文章

  • 【Unity】进度条和血条的三种做法
    前言在使用Unity开发的时候,进度条和血条是必不可少的,本篇文章将简单介绍一下几种血条的制作方法。1.使用SliderSlider组件由两部分组成:滑动区域和滑块。滑动区域用于显示滑动条的背景,而滑块则表示当前的数值位置。用户可以通过拖动滑块来改变数值。新建Slider,右键选择UI......
  • P3242 [HNOI2015] 接水果 抽象做法
    好吧好吧,自己做出来的第一道整体二分。省流:理解能力比较强的话直接拖到最后看算法流程吧。下面我们称输入时盘子的权值为“盘子的大小”,与文中使用的算法给盘子的赋权区分开。一堆询问第\(k_i\)小,考虑整体二分。先考虑外部过程。上整体二分板子,每次二分\(mid\),形象地把盘......
  • 一般图最大点独立集一个比较牛的做法
    来自p_b_p_b。设\(out(u)\)为\(u\)的临域点集,\(f_S\)表示点集为\(S\)时的最大点独立集。转移考虑拿出最大的那个点\(u\),枚举其选不选则有\(f_S=\max(f_{S-u},f_{S-u-out(u)}+1)\)。当\(S\)只有后\(\frac{n}{2}\)个点时记忆化,时空复杂度都是\(\mathcal{O}(2^{......
  • 从CF1934B学习硬币问题的非DP做法
    Problem-B-Codeforces被DP给限制思路了思路其实可以枚举前四个硬币的数量,然后通过倍数关系和更优的方案来限制每个硬币的枚举区间,最后再对剩余的值是否是最后一个硬币的倍数做检查,是就根据最小更新答案。一块钱最多两个,因为三个就可以直接用三块钱代替三块钱最多一个,......
  • NOI 2024省选OIFC模拟21 蒲巴巴 超繁做法
    题目描述一年一度的PuBaBa杯开始了!今年的PuBaBa杯总共有\(n\)个选手来参加,编号分别为\(1,2,\cdots,n\),他们的水平按编号依次递增,所以他们过的题目数量单调不降。作为本场比赛的出题人,PuBaBa总共出了\(m\)道题,他希望第\(i\)道题至少有\(l_i\)个选手通过,至多有\(......
  • 最长不下降子序列nlogn做法及其拓展
    最长不下降子序列nlogn做法及其扩展前言&nlogn做法LIS表示最长不下降子序列考虑设\(f_i\)表示LIS长度为i的最小值(具有单调性),对于每个新的x,二分出最大的满足\(f_i\)小于等于x的位置w,更新w+1还有一种单调栈理解法,假若已经维护了一个LIS在单调栈里,对于一个新的x,二分出最大的满足......
  • ARC120F2 Wine Thief 线性做法
    由于我比较菜,会把式子写的比较仔细。伟大的alpha1022指出如下事实,即我们无非是要计算\[\begin{aligned}&\quad\;\sum_{i=1}^NA_i\sum_{j=1}^K\binom{i-1-(j-1)(D-1)}{j-1}\binom{N-i-(K-j)(D-1)}{K-j}\\&=\sum_{i=1}^NA_i\sum_{j=1}^K\left([x^{i-1}]\frac{x^{(......
  • ppt透明蒙版,漏出部分做法
     准备3个矩形1.透明度33% 黑色2.两个想要突出的 白色矩形框 按照顺序选中 1-2-3  组合,减除都可以  ......
  • CSP-S 2023消消乐 字符串哈希做法and链表优化dp做法
    做完这题感觉整个人都升华了...打算说一下两种做法,字符串哈希和dp均可。dp则需要维护一个前向星去检索出第一个符合要求的位置。题解明天补,先写高数了。#include<bits/stdc++.h>#defineintlonglong#defineullunsignedlonglong#definerep(i,a,b)for(inti=(a);i<......
  • P6164 后缀平衡树的一种非常规做法
    【模板】后缀平衡树LuoguP6164题目描述给你一个字符串init,要求你支持三个操作:在当前字符串的后面插入若干个字符。在当前字符串的后面删除若干个字符。询问字符串\(s\)在当前字符串中出现了几次(作为连续子串)?你必须在线支持这些操作。Solution此处写一种非常......