二维的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的更多相关文章

  1. 2019年华南理工大学程序设计竞赛(春季赛) K Parco_Love_String(后缀自动机)找两个串的相同字串有多少

    https://ac.nowcoder.com/acm/contest/625/K 题意: 给出Q 个询问 i , 求 s[0..i-1] 与 s[i...len-1] 有多少相同的字串 分析: 给出 ...

随机推荐

  1. Sass 增强语法的样式表

    功能: 完全兼容CSS3 相对CSS,扩展了变量.嵌套和mixins 对控制颜色和其他值的非常有用的方法 高级功能,如库的直接控制 良好的格式,自定义输出 语法 对于Sass,有两种语法. 一种叫SC ...

  2. MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法 (转)

    解决方法: 解决办法也有两种, 第一种是在创建子程序(存储过程.函数.触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个, 例如: CREATE DEFI ...

  3. ios 在工程中使用字体

    1.将字体拖入项目 2.在info.plist 文件中加入 3.使用 self.label.font = [UIFont fontWithName: @"FZ XingHei" s ...

  4. Java开发人员必须掌握的Linux命令-学以致用(5)

    ================================================= 人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助! 点击查看高清无码教程 == ...

  5. (转)InFluxDB数据库使用手册

    InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...

  6. Java 多线程 sleep()方法与yield()方法的区别

    sleep()方法与yield()方法的区别如下: 1 是否考虑线程的优先级不同 sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会.而yield()方 ...

  7. 输入、输出与Mad Libs 游戏。

    name1=input('请输入一个名字:') name2=input('再输入一个名字:') time1=input('请输入一段时间:') print('{},是傻子,{},{}吃不了鸡'.for ...

  8. Nestjs 微服务

    文档 工作示例 安装: $ npm i --save @nestjs/microservices main.ts import { NestFactory } from '@nestjs/core'; ...

  9. 2019.4.10 初识puppeteer

    注:原地址:https://www.cnblogs.com/paris-test/p/9705075.html 一.Puppeteer 介绍 Puppeteer 翻译是操纵木偶的人,利用这个工具,我们 ...

  10. 转载Alpine基础

    2018-08-06 基础镜像 FROM alpine:latest 国内可用镜像地址 官方镜像列表:http://rsync.alpinelinux.org/alpine/MIRRORS.txt 镜 ...