二维的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. JAVA 调用https接口, java.security.cert.CertificateException

    package com.easycare.store.util; import java.security.cert.CertificateException; import java.securit ...

  2. leetcode目录

    Leetcode 1. 数组 2. 动态规划 3. 字符串 4. 链表.双指针.排序 5. 树 6. 回溯算法.贪心算法.分治算法.

  3. Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

    一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...

  4. Shell 编程详解

    部分引用自:https://blog.csdn.net/qq_22075977/article/details/75209149 一.概述 Shell是一种具备特殊功能的程序,它提供了用户与内核进行交 ...

  5. P1169 [ZJOI2007]棋盘制作 DP悬线法

    题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间的方阵,对应八八六十四卦,黑白 ...

  6. RPC远程调用——Dubbo

    1.安装Zookeeper a.下载Zookeeper后解压 b.进入根目录下的conf文件夹,将zoo_sample.cfg改成bak文件,并复制一个修改为zoo.cfg,修改相关配置 # The ...

  7. UVA 548 Tree 建树

    题意: 输入中序和后序的权值,输出哪个叶子使它到根的路径上权和最小. 思路: 输入后建树,然后dfs求最小的叶子. #include<iostream> #include<cstdi ...

  8. CSS文字垂直居中的一些问题

    说到CSS文字垂直居中,很多初学者都喜欢用调整行高等于div高度的方式来达到效果, div { height:30px; line-height:30px; } 但其实这么做会遇到一个问题:多行文本溢 ...

  9. Java课程2019年3月开学测试

    一.登录界面 模板的验证方式已经写在了function里面,我们只需要在提交的过程中进行验证. 我们这里需要注意到的是在login文件夹中,有一个randcode的验证码生成文件,打开代码我们可以看到 ...

  10. 中文乱码总结之JSP乱码

    一.JSP中文乱码问题 JSP页面的汉字显示为乱码,而英文和阿拉伯数字正常. 二.原因 汉字编码时用的字符集 与解码用的字符集不一致:所有的字符集都兼容ASCII码,所以英文.数字不存在乱码. 编号 ...