洛谷-p4555】的更多相关文章

P4555 [国家集训队]最长双回文串 题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为\(n\)的串\(S\),求\(S\)的最长双回文子串\(T\),即可将\(T\)分为两部分\(X\),\(Y\),(\(|X|,|Y|≥1\))且\(X\)和\(Y\)都是回文串. 输入输出格式 输入格式: 一行由小写英文字母组成的字符串\(S\). 输出格式: 一行一个整数,表示最长双回文子串的长度. 说明…
题目链接:https://www.luogu.com.cn/problem/P4555 首先明白两个回文串,那么要使两个回文串成立,那么我们只能把$'#'$作为中间节点. 然后我们跑一边Manacher,记录$l[],r[]$,$l[i]$表示以$i$开头的最长回文串长度,$r[i]$表示以$i$结尾的最长回文串长度. 那么到最后我们只需要用线性的时间来枚举$i$,找$l_i+r_i$最大即可. 但是,在Manacher算法中有局限性:就是我们处理出来的$l,r$都是饱和回文串的,那么我们就要处…
链接: P4555 题意: 在字符串 \(S\) 中找出两个相邻非空回文串,并使它们长度之和最大. 分析: 直接使用马拉车算法求出每个点扩展的回文串.如果枚举两个回文串显然会超时,我们考虑切割一个长串,即枚举切割点,只需枚举每个 \(\#\) 即可,但为了保证两个串都非空,所以最左和最右的 \(\#\) 不能枚举.然后我们需要找到最靠左的回文串中心 \(L\) 使得该回文串包括该点,以及最靠右的回文串中心 \(R\) 使得该回文串包括该点,发现两个回文串长度之和就是 \(R-L\).同时我们发现…
题意:给你一个串,问你以i结尾的回文串加上以i+1开头的回文串的最大长度 解题思路:回文自动机板子题,记录下每次正着添加字符的时候,当前字符能够到达的最大回文子串的长度和倒着添加字符的时候,能够到达的最大回文子串的长度,更新下就行了 代码: //回文自动机 //能够解决基本上所有回文字符串问题 //功能: //求前缀字符串中的本质不同的回文串的种类 //求本质不同回文串的个数 //以下标i为结尾的回文串的个数和种类 //每个本质不同回文串包含的本质不同回文串的种类 //数组的含义 //next[…
题目大意:给定一个长度为 N 的字符串 S,求 S 的最长双回文子串的长度,双回文子串定义为是 S 的一个子串,可以分成两个互不相交的回文子串. 题解:利用回文自动机 len 数组的性质,即:len 数组记录的是以每个点 i 字符结尾的,向左可以延伸的,最长回文串的长度.正向遍历一遍串 S,统计出对于每个点向左可以延伸的最长回文长度,再将字符串翻转,统计出向右可以延伸的长度.最后枚举间断点,统计答案即可. 注:增量法回文自动机的插入依赖于字符串下标递增的顺序,因此倒序插入必须将原串转置. 代码如…
题意 题目链接 Sol 我的做法比较naive..首先manacher预处理出以每个位置为中心的回文串的长度.然后枚举一个中间位置,现在要考虑的就是能覆盖到i - 1的回文串中 中心最靠左的,和能覆盖到i+1中 中心最靠右的,算一下答案取个max. 线段树维护一下区间min, max.标记永久化炒鸡好写 // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 10…
题目链接 \(|S|<=10^5\),时间还是很宽松的. 允许我们使用线性/\(N\log N\)/甚至\(N \sqrt N\)的算法. 设\(l[i]\)表示以\(a[i]\)结尾的最长回文串,\(r[i]\)表示以\(a[i]\)开头的最长的回文串, 那么答案很显然就是\(\max_{i=1}^{len-1}l[i]+r[i+1]\) 怎么求? 回顾一下我们的马拉车算法 for(int i = 1; i < len; ++i){ if(i < maxright) hw[i] = m…
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类似于匈牙利(⊙o⊙) (匈牙利的复杂度惊人,1e6秒过) #include <cstdio> ]; ],fir[],to[],nex[]; int N,n,p,q; void add(int p,int q) { nex[++N]=fir[p];to[N]=q;fir[p]=N; } bool f…
没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数最大.但是,没有职员愿和直接上司一起与会. 输入描述 Input Description 第一行一个整数N.(1<=N<=6000)接下来N行,第i+1…
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循“低价购买:再低价购买”的原则.写一个程序计算最大购买次数. 这里是某支股票的价格清单: 日期 1 2…