hdu3261
题意:
求至少出现k次的最长字符串(可重复)
题解:
后缀数组维护height数组只要找连续k个的最小值
代码:
#include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std;
#define maxn 1000010
int x[maxn],y[maxn],sa[maxn],height[maxn],
rank[maxn],c[maxn],a[maxn],h,t;
char s[maxn];
int n,m;
struct{
int num,ans;
}b[maxn];
void asa(int n,int m)
{
int p=,f=;
for (int i=;i<=m;i++) c[i]=;
for (int i=;i<=n;i++) c[x[i]=a[i]]++;
for (int i=;i<=m;i++) c[i]+=c[i-];
for (int i=n;i;i--) sa[c[x[i]]--]=i;
for(int i=;i<=n&&p<=n;i<<=)
{
p=;
for (int j=n-i+;j<=n;j++) y[++p]=j;
for (int j=;j<=n;j++)
if (sa[j]>i) y[++p]=sa[j]-i;
for (int j=;j<=m;j++) c[j]=;
for (int j=;j<=n;j++) c[x[y[j]]]++;
for (int j=;j<=m;j++) c[j]+=c[j-];
for (int j=n;j;j--) sa[c[x[y[j]]]--]=y[j];
swap(x,y); x[sa[]]=; p=;
for (int j=;j<=n;j++)
x[sa[j]]=y[sa[j]]==y[sa[j-]]&&y[sa[j]+i]==y[sa[j-]+i]
?p-:p++;
m=p;
}
for (int i=;i<=n;i++) rank[sa[i]]=i;
for (int i=;i<=n;i++)
{
int j=sa[rank[i]-];
if (f) f--;
while (a[i+f]==a[j+f]) f++;
height[rank[i]]=f;
}
}
void insert(int x,int y)
{
while (t>=h&&b[t].ans>=x) t--;
b[++t].num=y;
b[t].ans=x;
}
int main()
{
freopen("noip.in","r",stdin);
freopen("noip.out","w",stdout);
cin>>n>>m; m--;
for (int i=;i<=n;i++) cin>>a[i];
asa(n,);
for (int i=;i<=m-;i++) insert(height[i],i);
int ans=; h=;
for (int i=m;i<=n;i++)
{
insert(height[i],i);
if (t>=h&&b[h].num<i-m+) h++;
ans=max(b[h].ans,ans);
}
cout<<ans;
return ;
}
hdu3261的更多相关文章
随机推荐
- 通过 LPeg 介绍解析表达式语法(Parsing Expression Grammars)
通过 LPeg 介绍解析表达式语法(Parsing Expression Grammars) 译者: FreeBlues 修订版本: 1.00 最新链接: http://www.cnblogs.com ...
- sql 储存过程的使用
--获取所有数据 根据自定义函数传人类型id返回类型名称 USE [Cloths] GO /****** Object: StoredProcedure [dbo].[Proc_all] Script ...
- 使用Word批量删除换行和空白行
转载自:https://blog.csdn.net/dearmorning/article/details/78811137 问题一:从pdf文档中复制一部分内容到word的时候,pdf的自动换行会自 ...
- 个人经验~mysql故障处理思路
一 简介:个人经验总结 二 思路: 从整体上再进行梳理 三 linux角度 1 硬件是否有问题 常见主板 raid卡 和raid磁盘组 2 综合指标 负载 uptime : 1min 5min ...
- 2017-2018-2 20155303『网络对抗技术』Exp4:恶意代码分析
2017-2018-2 20155303『网络对抗技术』Exp4:恶意代码分析 --------CONTENTS-------- 一.原理与实践说明 1.实践目标 2.实践内容概述 3.基础问题回答 ...
- POI读取Excel(xls、xlsx均可以)——(四)
maven构建的项目-->pom.xml文件 eclipse提供Dependencies直接添加依赖jar包的工具:直接搜索poi以及poi-ooxml即可,maven会自动依赖需要的jar包: ...
- linux笔记_day05
1.bash以及特性 shell:外壳 GUI:KDE,Gnome,Xfce CLI:sh,csh,ksh,bash(born again shell) 进程:在每个进程看来,当前主机上只存在内核和当 ...
- Jetson tk1 安装 Intel 7260 无线网卡驱动
Jseton TK1上没有集成的无线网卡,开发板上有一个mini pci-e接口,可以插入Intel 7260这款继承了wifi和蓝牙功能的无线网卡: 该网卡实物如下图,在淘宝和Amazon上都可以买 ...
- SpringBoot整合MyBatis(XML)
(1).添加依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...
- 跟踪OceanLotus的新下载程序KerrDown
攻击的方法 两种方法将KerrDown下载器传递给目标.一个是使用带有恶意宏的Microsoft Office文档,另一个是包含带有DLL side-loading合法程序的RAR存档 .对于RAR存 ...