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] 有多少相同的字串 分析: 给出 ...
随机推荐
- Yii2中mongodb使用ActiveRecord的数据操作
概况 Yii2 一个高效安全的高性能PHP框架.mongodb 一个高性能分布式文档存储NOSQL数据库. 关于mongodb与mysql的优缺点,应该都了解过. mysql传统关系数据库,安全稳定 ...
- php操作数据库获取到的结果集mysql_result
判断取出的结果集是否为空集: $sql="select adminPwd from adminaccount"; //判断查询是否有数据 if(mysqli_num_rows($r ...
- es ik分词插件安装
1.ik下载(下载es对应版本的ik分词包) https://github.com/medcl/elasticsearch-analysis-ik/releases 2.mac cd /usr/loc ...
- The Triangle(DP-数塔问题)
题目链接:http://poj.org/problem?id=1163 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number ...
- Eclipse中代码字体背景变红/变黄/变绿
如图所示:运行之后,突然这样.到底是什么原因导致的呢? : 经过查找资料可知:因为Eclipse中有覆盖代码功能 (绿色表示代码被执行到,红色表示代码没有被执行到,黄色表示代码部分执行到) 怎么解决这 ...
- rabbitmq-cluster搭建
一.前期准备: 准备3台linux系统,配置好公司源,或者官网下载相应的网络源 1.条件:准备3台linux系统,确保能连到download.yunwei.edu 2.编写yum源下载脚本: #vim ...
- 【SQL】sql语句在insert一条记录后返回该记录的ID
insert into test(name,age) values(') SELECT @@IDENTITY test是表名 重点是这句SELECT @@IDENTITY
- .Net简单工厂模式,工厂模式,抽象工厂模式实例
1.定义 简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 工厂模式:定义一个用于创建对象的接口, ...
- CentOS下安装yum源的流程和操作
一般公司都用Linux来搭建服务器,Linux安装软件时能够用yum安装依赖包是一件非常简单而幸福的事情,因为你只需一个简单的安装命令yum install []即可安装相应的软件,yum工具会自动的 ...
- 如何避免OOM
一.减小对象的内存占用 1)使用更加轻量的数据结构 例如,我们可以考虑使用ArrayMap/SparseArray而不是HashMap等传统数据结构. ArrayMap和HashMap主要不同之处在于 ...