Tjoi2019 甲苯先生和大中锋的字符串 后缀自动机_差分
tjoi胆子好大,直接出了两道送分题......
都 9102 年了,还有省选出模板题QAQ......
Code:
#include <bits/stdc++.h>
#define setIO(s) freopen(s".in","r",stdin)
#define maxn 200010
using namespace std;
char str[maxn];
int n,C[maxn],rk[maxn],arr[maxn];
int dis[maxn],f[maxn],ch[maxn][30],last,tot,cnt[maxn];
void init() { last = tot = 1; }
void ins(int c){
int np = ++tot, p = last;
last = np, dis[np] = dis[p] + 1;
while(p && !ch[p][c]) ch[p][c] = np, p = f[p];
if(!p) f[np] = 1;
else {
int q = ch[p][c];
if(dis[q] == dis[p] + 1) f[np] = q;
else {
int nq = ++tot;
dis[nq] = dis[p] + 1;
memcpy(ch[nq],ch[q],sizeof(ch[q]));
f[np] = nq, f[nq] = f[q], f[q] = nq;
while(p && ch[p][c] == q) ch[p][c] = nq, p = f[p];
}
}
++cnt[np];
}
void work()
{
int k;
init();
scanf("%s%d",str + 1,&k), n = strlen(str + 1);
for(int i = 1;i <= n; ++i) ins(str[i] - 'a');
for(int i = 1;i <= tot; ++i) ++C[dis[i]];
for(int i = 1;i <= tot; ++i) C[i] += C[i - 1];
for(int i = tot;i >= 1; --i) rk[C[dis[i]]--] = i;
for(int i = tot;i >= 1; --i) {
int u = rk[i];
cnt[f[u]] += cnt[u];
if(cnt[u] == k)
{
arr[dis[f[u]] + 1] += 1;
arr[dis[u] + 1] -= 1;
}
}
int ans = 0, p = 0;
for(int i = 1;i <= tot; ++i) {
arr[i] += arr[i - 1];
if(arr[i] >= p && arr[i] != 0) ans = i, p = arr[i];
}
if(ans == 0)
printf("-1\n");
else
printf("%d\n",ans);
for(int i = 0;i <= tot; ++i)
{
for(int j = 0;j < 30; ++j) ch[i][j] = 0;
cnt[i] = C[i] = arr[i] = 0;
}
last = tot = 0;
}
int main()
{
// setIO("input");
int T;
scanf("%d",&T);
while(T--) work();
return 0;
}
Tjoi2019 甲苯先生和大中锋的字符串 后缀自动机_差分的更多相关文章
- [TJOI2019]甲苯先生和大中锋的字符串——后缀自动机+差分
题目链接: [TJOI2019]甲苯先生和大中锋的字符串 对原串建后缀自动机并维护$parent$树上每个点的子树大小,显然子树大小为$k$的节点所代表的子串出现过$k$次,那么我们需要将$[len[ ...
- 洛谷P5341 [TJOI2019]甲苯先生和大中锋的字符串
原题链接P5341 [TJOI2019]甲苯先生和大中锋的字符串 题目描述 大中锋有一个长度为 n 的字符串,他只知道其中的一个子串是祖上传下来的宝藏的密码.但是由于字符串很长,大中锋很难将这些子串一 ...
- 【题解】Luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串
原题传送门 实际按照题意模拟就行 我们先求出字符串的sa 因为要在字符串中出现k次,所以我们枚举\(l,r(r-l+1=k)\)看一共有多少种合法的方案 合法方案的长度下界\(lb\)为\(Max(h ...
- 【洛谷 P5341】 [TJOI2019]甲苯先生和大中锋的字符串(后缀自动机)
题目链接 建出\(sam\),求出parent tree上每个点的\(endpos\)集合大小. 如果等于\(k\),说明到达这个点的都可以.给\((len[fa(i)],len[i]]\)的\(cn ...
- [TJOI2019]甲苯先生和大中锋的字符串
有个叫asuldb的神仙来嘲讽我 说这题SAM水题,而且SA过不了 然后我就用SA过了 显然是一个Height数组上长为k的滑块,判一下两边,差分一下就可以了 #include"cstdio ...
- luogu P5341 [TJOI2019]甲苯先生和大中锋的字符串
传送门 考虑子串以及出现个数,可以发现SAM可以快速知道每种子串的出现次数,即所在状态的\(endpos\)集合大小,然后一个状态对应的子串长度是一段连续区间,所以可以对每个状态差分一下,就能统计答案 ...
- p5341 [TJOI2019]甲苯先生和大中锋的字符串
分析 TJOI白给题 建出sam,对于每个点如果它的子树siz和等于k 那么对于这个满足的点它有贡献的长度一定是一个连续区间 直接差分即可 代码 #include<bits/stdc++.h&g ...
- 模板—字符串—后缀自动机(后缀自动机+线段树合并求right集合)
模板—字符串—后缀自动机(后缀自动机+线段树合并求right集合) Code: #include <bits/stdc++.h> using namespace std; #define ...
- bzoj3756pty的字符串(后缀自动机+计数)
题目描述 题解 我们可以先对trie树建出广义SAM,然后维护一下right集合大小(注意right集合在广义SAM上的维护方式). 然后把匹配穿往广义SAM上匹配,假设现在匹配到了x节点,那么x的所 ...
随机推荐
- 学习EXTJS6(5)基本功能-进度条组件
Ext.ProgressBar有二种模式:手动和自动:手动:自己控制显示.进度.更新.清除.自动只需要调用Wait方法即可. 配置项: 配置项 类型 说明 renderTo String 指定页面 ...
- HDU 2415 Bribing FIPA
Bribing FIPA Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original I ...
- 2-SAT·hihoCoder音乐节
2-SAT·hihoCoder音乐节 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 hihoCoder音乐节由hihoCoder赞助商大力主办,邀请了众多嘉宾和知名乐队 ...
- eclipse实现批量修改文件的编码方式
http://blog.csdn.net/haorengoodman/article/details/38493007 在eclipse+MyEclipse环境下,打开一个jsp文件,经常发现汉字无法 ...
- HDOJ 题目5097 Page Rank(矩阵运算,模拟)
Page Rank Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others) Tota ...
- UVa 10465 Homer Simpson(DP 全然背包)
题意 霍默辛普森吃汉堡 有两种汉堡 一中吃一个须要m分钟 还有一种吃一个须要n分钟 他共同拥有t分钟时间 要我们输出他在尽量用掉全部时间的前提下最多能吃多少个汉堡 假设时间无法用 ...
- 打造终端下mutt收发邮件环境(fbterm,fetchmail,msmtp,procmail,mutt)
实现mutt下收发邮件须要安装,mutt,fbterm,fetchmail,msmtp,procmail 下面是各配置文件.在home文件夹下,隐私信息有马赛克... .muttrc : 当中Mail ...
- spring中abstract bean的使用方法
什么是abstract bean?简单来说.就是在java中的继承时候,所要用到的父类. 案例文件结构: 当中Person类为父类.Student类为子类,其详细类为: package com.tes ...
- 金融扫盲-资本市场从天使轮、ABCD轮、风投、到上市圈钱、借壳上市。
转载请标明出处:http://blog.csdn.net/hu948162999/article/details/47777859 对于金融知识零基础的人进行扫盲,故事浅显易懂.趣味性强. 来之知乎. ...
- Hadoop Web项目--Friend Find系统
项目使用软件:Myeclipse10.0,JDK1.7,Hadoop2.6,MySQL5.6.EasyUI1.3.6.jQuery2.0,Spring4.1.3. Hibernate4.3.1,str ...