题意:

求至少出现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的更多相关文章

随机推荐

  1. 通过 LPeg 介绍解析表达式语法(Parsing Expression Grammars)

    通过 LPeg 介绍解析表达式语法(Parsing Expression Grammars) 译者: FreeBlues 修订版本: 1.00 最新链接: http://www.cnblogs.com ...

  2. sql 储存过程的使用

    --获取所有数据 根据自定义函数传人类型id返回类型名称 USE [Cloths] GO /****** Object: StoredProcedure [dbo].[Proc_all] Script ...

  3. 使用Word批量删除换行和空白行

    转载自:https://blog.csdn.net/dearmorning/article/details/78811137 问题一:从pdf文档中复制一部分内容到word的时候,pdf的自动换行会自 ...

  4. 个人经验~mysql故障处理思路

    一 简介:个人经验总结 二 思路: 从整体上再进行梳理 三 linux角度 1 硬件是否有问题  常见主板 raid卡 和raid磁盘组 2 综合指标 负载 uptime : 1min  5min  ...

  5. 2017-2018-2 20155303『网络对抗技术』Exp4:恶意代码分析

    2017-2018-2 20155303『网络对抗技术』Exp4:恶意代码分析 --------CONTENTS-------- 一.原理与实践说明 1.实践目标 2.实践内容概述 3.基础问题回答 ...

  6. POI读取Excel(xls、xlsx均可以)——(四)

    maven构建的项目-->pom.xml文件 eclipse提供Dependencies直接添加依赖jar包的工具:直接搜索poi以及poi-ooxml即可,maven会自动依赖需要的jar包: ...

  7. linux笔记_day05

    1.bash以及特性 shell:外壳 GUI:KDE,Gnome,Xfce CLI:sh,csh,ksh,bash(born again shell) 进程:在每个进程看来,当前主机上只存在内核和当 ...

  8. Jetson tk1 安装 Intel 7260 无线网卡驱动

    Jseton TK1上没有集成的无线网卡,开发板上有一个mini pci-e接口,可以插入Intel 7260这款继承了wifi和蓝牙功能的无线网卡: 该网卡实物如下图,在淘宝和Amazon上都可以买 ...

  9. SpringBoot整合MyBatis(XML)

    (1).添加依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...

  10. 跟踪OceanLotus的新下载程序KerrDown

    攻击的方法 两种方法将KerrDown下载器传递给目标.一个是使用带有恶意宏的Microsoft Office文档,另一个是包含带有DLL side-loading合法程序的RAR存档 .对于RAR存 ...