字符串模拟赛T2


// source code from laekov for c0x17
#define PRID "fkqh"
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int maxn = ; int n, l[maxn], q[maxn], vx[maxn], vy[maxn];
char a[maxn]; void manacher() {
l[] = ;
for (int i = , j = ; i < (n << ) - ; ++ i) {
int r = ((j + ) >> ) + l[j] - ;
int p = i >> , q = i - p;
l[i] = (r >= q) ? min(r - q + , l[(j << ) - i]) : ;
while (p - l[i] >= && q + l[i] < n && a[p - l[i]] == a[q + l[i]])
++ l[i];
if (q + l[i] - > r)
j = i;
}
} #define getLeft(x) (((x)>>1)-l[x]+1)
#define getRight(x) ((((x)+1)>>1)+l[x]-1) void dp(bool d) {
static int q[maxn];
int hd = , tl = ;
if (!d) {
for (int i = ; i < n; ++ i) {
if (!tl || getRight(i << ) > getRight(q[tl - ]))
q[tl ++] = (i << );
while (getRight(q[hd]) < i)
++ hd;
vx[i] = (i << ) - q[hd] + ;
if (i < n - && getRight((i << ) + ) > getRight(q[tl - ]))
q[tl ++] = (i << ) + ;
}
}
else {
for (int i = n - ; i >= ; -- i) {
if (!tl || getLeft(i << ) < getLeft(q[tl - ]))
q[tl ++] = (i << );
while (getLeft(q[hd]) > i)
++ hd;
vy[i] = q[hd] - (i << ) + ;
if (i && getLeft((i << ) -) < getLeft(q[tl - ]))
q[tl ++] = (i << ) - ;
}
}
} int main(int argc, char* args[]) {
if (argc < || strcmp(args[], "-nf")) {
freopen(PRID ".in", "r", stdin);
freopen(PRID ".out", "w", stdout);
}
scanf("%s", a);
n = strlen(a);
manacher();
dp();
dp();
int ans = ;
for (int i = ; i < n; ++ i)
ans = max(ans, vx[i - ] + vy[i]);
printf("%d\n", ans);
}
字符串模拟赛T2的更多相关文章
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
- 20161023 NOIP 模拟赛 T2 解题报告
Task 2.回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他 ...
- 20161003 NOIP 模拟赛 T2 解题报告
Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...
- NOIP欢乐模拟赛 T2 解题报告
小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...
- 20180530模拟赛T2——绀碧之棺
题目背景 qiancl 得到了一张藏宝图,上面写了一道谜题. 题目描述 定义\(F(n)\)为 n 在十进制下各个数位的平方和,求区间\([a,b]\)中有多少\(n\)满足\(k\times F(n ...
- 20180519模拟赛T2——pretty
[问题描述] 小美今天对于数列很有兴趣.小美打算找出一些漂亮的序列.一个漂亮的序列的限制如下: 长度为 n ,而且数列里只包含 [1,n] 的整数. 要不是不降的序列就是不升的序列. 小美想知道有多少 ...
- 20180516模拟赛T2——string
题解 对于一个字符串A,我们只能把其首字符取出,故如果我们想让A串与B串相等,能重复利用的部分只能是A串结尾与B串开头相等的部分.对于取出的字符,我们可以把'o'放在一个容器中,把'x'放在另一个容器 ...
- 2019.11.11 模拟赛 T2 乘积求和
昨天 ych 的膜你赛,这道题我 O ( n4 ) 暴力拿了 60 pts. 这道题的做法还挺妙的,我搞了将近一天呢qwq 题解 60 pts 根据题目给出的式子,四层 for 循环暴力枚举统计答案即 ...
- 5.12 省选模拟赛 T2 贪心 dp 搜索 差分
LINK:T2 这题感觉很套路 但是不会写. 区间操作 显然直接使用dp不太行 直接爆搜也不太行复杂度太高. 容易想到差分 由于使得整个序列都为0 那么第一个数也要i差分前一个数 强行加一个0 然后 ...
随机推荐
- 简述WebService的使用(一)
环境: vs版本:vs2013 windows版本:win7 IIS版本:IIS7.0 (如果觉得对您有用,请点击右下角[推荐]一下,让更多人看到,谢谢) 配置环境: 主要针对于IIS ·首先,有很多 ...
- WCF 入门 (17)
前言 看的是入门视频,就希望培养一个学习的习惯吧. 前段时间看了微软的SurfaceBook的视频,被惊艳到了,但是我没钱买啊... 第17集 WCF中未经处理的异常 Unhandled except ...
- 第十三课:js操作节点的创建
浏览器提供了多种方法创建节点.比如:document.createElement,innerHTML,insertAdjacentHTML,createContextualFragment. docu ...
- 解决 pathForResource 返回 nil的问题
点击(此处)折叠或打开 NSString* path = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@&quo ...
- NABCD模型进行竞争性需求分析
确定项目:教室管理系统 负责人:李凤娇,高德建 选择比努力更重要.一个项目成功自然离不开组员们的努力.但是,光努力是不够的.还需要用户有需求,能快速实现. 这些东西,看似很虚,却能让我们少走不少弯路. ...
- 传智168期JavaEE就业班 day02-css
* 课程回顾: * HTML语言 * HTML的简介 超文本标记语言. * 是网页最基础的语言. * 都是由标签所组成的. * HTML的基本格式 <html> <head> ...
- WebService 入门程序(一)
第一步:定义webService接口 package com.robert.ws.service; import javax.jws.WebService; @WebService public in ...
- NS图绘制工具推荐
世界上要画NS图的人肯定很少,这种无聊的东西= = 我根据个人经验和直觉,推荐三个套工具. 一.签字笔(铅笔+橡皮)+作业纸+拍照的手机 鉴于我以前手绘版ns图已经找不到了,就用室友之前画的做个例子. ...
- POJ 2752 Seek the Name, Seek the Fame
传送门 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14761 Accepted: 7407 Description ...
- ubuntu 12.04 server + OPENACS(TR069)安装配置日记
1. 有两个叫openacs的, openacs.org下的不是 2. 严格匹配版本:luo@bogon:~$ ls jboss-4.2.3.GA-jdk6.zip jdk-6u41-linux-i ...