Description全部由小写字母构成且长度不超过 100000 的非空字符串,求最长的连续子字符串
使得该字符串与其反转字符串相等Input输入包含多组测试数据,每组数据一行,为一个长度不超过 100000 的非空字符串Output每组数据输出一行,为最长的连续子字符串的长度Sample Inputabcbad
abccba
abcba
abbacc
ccabbaSample Output5
6
5
4
4根据今天连WA带TLE的经验可以归纳出在写Manacher的时候需要注意这几点: 1、不同case之间要清零清干净&nb
这道题的DP其实可以换一个角度出发思考,因为我们可以随意调整一个块,所以每一个块有字母的种类个数肯定是该块的最优块数。接下来我们只需要确定它们的排布就可以了。我们这样建立状态。dp[i][j]表示第i个块的第一个字母为j时的最少联通个数,这样我们就可以通过dp[i - 1][0~25]推出dp[i][0 ~25]了。 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int ma
这是蓝书上一道很经典的数论题,位于P124页,只不过题意有一些细微偏差,但是不影响本题结论的正确性,做法可以看:洛谷P2398。我们只需要进行一次预处理,下底分块,保留SQRT(n)的查询就行了。虽然时间上Vjudge垫底,但是毕竟我弱啊……,下面是一段代码。#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 4e6 + 5;
long long f[maxn];
int&n
题目描述for i=1 to n for j=1 to n sum+=gcd(i,j)给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式输入格式: n 输出格式: sum 输入输出样例输入样例#1:2 输出样例#1:5 说明数据范围 30% n<=3000 60% 7000<=n<=7100 100% n<=100000 题目十分奇特,我们知道1e6的数据n^2 log n 卡不死你也能卡爆你。我们需要将复杂度控制在O(n log n)以内。我们这样想,首先这些GCD可以被重新分
有一个字符串S,求S最少可以被划分为多少个回文串。 例如:abbaabaa,有多种划分方式。 a|bb|aabaa - 3 个回文串 a|bb|a|aba|a - 5 个回文串 a|b|b|a|a|b|a|a - 8 个回文串 其中第1种划分方式的划分数量最少。 Input输入字符串S(S的长度<= 5000)。Output输出最少的划分数量。Sample Input abbaabaaSample Output 3首先我们看见回文串问题可以模仿Manacher向空隙中填满'#'符号。然后可以推知DP转移方程dp[i + j] = min(dp[i + j], dp[i - j
题目描述如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含2或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k 操作2: 格式:2 x 含义:输出第x个数的值 输出格式: 输出包含若干行整数,即为所有操作2的结果。 输入输出样例输入样例#1:5 5
题目背景题目名称是吸引你点进来的 实际上该题还是很水的 题目描述区间质数个数 输入输出格式输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line 输入输出样例输入样例#1:2 5
1 3
2 6 输出样例#1:2
Crossing the line 说明【数据范围和约定】 对于20%的数据 1<=n<=10 1<=m<=10 对于100%的数据 1<=n<=1000 1
题目背景这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树。同时请注意常数优化 题目描述如题,给定N个正整数构成的序列,将对于指定的闭区间查询其区间内的第K小值。 输入输出格式输入格式: 第一行包含两个正整数N、M,分别表示序列的长度和查询的个数。 第二行包含N个正整数,表示这个序列各项的数字。 接下来M行每行包含三个整数l, r, kl,r,k , 表示查询区间[l, r][l,r]内的第k小值。 输出格式: 输出包含k行,每行1个正整数,依次表示每一次查询的结果 输入输出样例输入样例#1:5&nbs
题目描述如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式输入格式: 第一行包含三个整数N、M、P,分别表示该数列数字的个数、操作的总个数和模数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:2 x y k 含义:将区间[x,y]内每个数加上k 操作3: 格式:3 x y 含义:输出区间[x,y]内每个数的和对P取模所得
LCS - Longest Common Substringno tags A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is the set of lowercase letters. Substring, also called factor, is a consecutive sequence of characters occurrences at least once in a string. Now your task is si