Parco_Love_String
二维的kmp直接搞出来emmm, 后缀自动机都没这个快(本弱鸡不会后缀自动机)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define re register
const int N=;
void read(int &a)
{
a=;
int d=;
char ch;
while(ch=getchar(),ch>''||ch<'')
if(ch=='-')
d=-;
a=ch-'';
while(ch=getchar(),ch>=''&&ch<='')
a=a*+ch-'';
a*=d;
}
void write(int x)
{
if(x<)
putchar(),x=-x;
if(x>)
write(x/);
putchar(x%+'');
}
char s[N];
int g[N][N],ans[N],n,T,f[N][N];
int main()
{
scanf("%s",s+);
n=strlen(s+);
for(re int i=;i<=n;i++)
for(re int j=;j<=n;j++)
if(s[i]==s[j])///相等就将前面的转移过来+1,算二维的KMP
f[i][j]=f[i-][j-]+;
for(re int i=n;i>=;i--)
for(re int j=n;j>=;j--)
if(s[i]==s[j])///同理
g[i][j]=g[i+][j+]+;
for(re int i=;i<=n;i++)///i=1只有一个字母,那么相同字母出现的个数就是答案
if(s[]==s[i])
ans[]++;
for(re int i=;i<=n;i++)
{
ans[i]=ans[i-];/// 上一个i分割的答案肯定我这个一个i也有(子串--)
for(re int j=i+;j<=n;j++)///算出从这个分割点开始后的所有答案
ans[i]+=min(f[i][j],j-i);
for(re int j=;j<i;j++)///把前面一个串自己相同的子串删除,因为自己不能跟自己比较
ans[i]-=min(g[i][j],i-j);
}
read(T);
while(T--)
{
int x;
read(x);
write(ans[x]);
putchar('\n');
}
return ;
}
Parco_Love_String的更多相关文章
- 2019年华南理工大学程序设计竞赛(春季赛) K Parco_Love_String(后缀自动机)找两个串的相同字串有多少
https://ac.nowcoder.com/acm/contest/625/K 题意: 给出Q 个询问 i , 求 s[0..i-1] 与 s[i...len-1] 有多少相同的字串 分析: 给出 ...
随机推荐
- 14.并发与异步 - 3.C#5.0的异步函数 -《果壳中的c#》
14.5.2 编写异步函数 private static readonly Stopwatch Watch = new Stopwatch(); static void Main(string[] a ...
- Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- 蒙特卡诺近似与PBM
介绍蒙特卡诺近似的例子代码 #include<fstream> #include<iostream> #include<cstdlib> #include<c ...
- hibernate 保存报错 Hibernate operation: could not get next sequence value;
错误信息: [2017-09-28 18:51:38,854]-[org.hibernate.util.JDBCExceptionReporter:101] ERROR - Numeric Overf ...
- 禁用大陆ip段
https://www.ip2location.com/free/visitor-blocker 有 .htaccess web.config等 以iis为例 打开C:\Windows\System3 ...
- 001 python基础实战
报名了阿里大学的AI,一直没有学习,今天开始正式学习. 今天是第一节,Python的基础编程实战,里面包含两个示例. 一:任务实现文件的批量重命名. 1.创建一个目录 2.程序 #!/usr/bin/ ...
- 使用httpclient访问NLP应用接口例子
参考网址: http://yuzhinlp.com/docs.html 接入前须知 接入条件 1.进入网站首页,点击注册成为语知科技用户 2.注册完成后,系统将提供语知科技用户唯一标识APIKey,并 ...
- sybase central 报 NullPointerException 解决
准备发布版本,但是要创建数据库的时候遇到了问题,发现之前可以正常打开的sybase Central 现在无法打开了.苦恼一段时间后找到如下解决方法. 报错如下: 解决如下: 正常打开:
- 【树状数组】区间出现偶数次数的异或和(区间不同数的异或和)@ codeforce 703 D
[树状数组]区间出现偶数次数的异或和(区间不同数的异或和)@ codeforce 703 D PROBLEM 题目描述 初始给定n个卡片拍成一排,其中第i个卡片上的数为x[i]. 有q个询问,每次询问 ...
- [LeetCode] N-ary Tree Postorder Traversal N叉树的后序遍历
Given an n-ary tree, return the postorder traversal of its nodes' values. For example, given a 3-ary ...