题目链接:点击查看

题目大意:给出一棵以点1为根的树,每个节点代表一个大写字母,现在给出 m 次询问,每次询问以点 x 开始向上 l 个单位所组成的字符串所出现的次数

题目分析:广义后缀自动机的模板题目了,存一下模板

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=3e5+100;char s[N];int last_id[N];int tot=1,last=1,id[N<<1],tong[N<<1],cnt[N<<1];struct Node
{int ch[26];int fa,len;
}st[N<<1];void add(int x)
{int p=last;//if(st[p].ch[x]){int q=st[p].ch[x];if(st[q].len==st[p].len+1)last=q;else{int np=last=++tot;st[np].len=st[p].len+1;st[np].fa=st[q].fa;st[q].fa=np;for(int i=0;i<26;i++)st[np].ch[i]=st[q].ch[i];while(st[p].ch[x]==q)st[p].ch[x]=np,p=st[p].fa;}return;}//int np=last=++tot;st[np].len=st[p].len+1;while(p&&!st[p].ch[x])st[p].ch[x]=np,p=st[p].fa;if(!p)st[np].fa=1;else{int q=st[p].ch[x];if(st[p].len+1==st[q].len)st[np].fa=q;else{int nq=++tot;st[nq]=st[q]; st[nq].len=st[p].len+1;st[q].fa=st[np].fa=nq;while(p&&st[p].ch[x]==q)st[p].ch[x]=nq,p=st[p].fa;//向上把所有q都替换成nq}}
}void radix_sort()
{memset(tong,0,sizeof(tong));for(int i=1;i<=tot;i++)tong[st[i].len]++;for(int i=1;i<=tot;i++)tong[i]+=tong[i-1];for(int i=1;i<=tot;i++)id[tong[st[i].len]--]=i;
}int main()
{
//#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
//#endif
//  ios::sync_with_stdio(false);int n,m;scanf("%d%d%s",&n,&m,s+1); add(s[1]-'A');last_id[1]=last; cnt[last]++;for(int i=2;i<=n;i++){int fa;scanf("%d",&fa);last=last_id[fa];add(s[i]-'A');last_id[i]=last;cnt[last]++;}radix_sort();for(int i=tot;i>=1;i--){int cur=id[i],fa=st[cur].fa;cnt[fa]+=cnt[cur];}while(m--){int x,l;scanf("%d%d",&x,&l);int pos=last_id[x];while(st[st[pos].fa].len>=l)pos=st[pos].fa;printf("%d\n",cnt[pos]);}return 0;
}

2019ICPC(徐州) - Loli, Yen-Jen, and a cool problem(广义后缀自动机)相关推荐

  1. 2019ICPC(徐州) - Colorful String(哈希+二分+动态规划/回文自动机)

    题目链接:点击查看 题目大意:给出一个字符串,询问该字符串中的所有回文子串中,各有多少不同的字母 题目分析:这个题题意很简单,在比赛的时候看到字符串第一反应是哈希,哈希+暴力+线段树果不其然的T掉了. ...

  2. 记2019ICPC徐州打铁之感想by_Hile

    我太菜了. 2019.11.2-Day01: 因为买的是早晨六点半的高铁票,我为了防止睡过头就在实验室通宵了,其间连续打了接近2h的嗝,整理了计算几何的模板并且打印了下来,之后开始用bsq的电脑玩43 ...

  3. 2019ICPC(徐州) - so easy(并查集+离散化)

    题目链接:点击查看 题目大意:给出一个1~n的序列,然后给出m个操作,每个操作分为下列两种情况: 1 x:让数字x不可用 2 x:查询包括x在内的右侧的第一个可用数字 题目分析:因为n给到了1e9,而 ...

  4. 2019ICPC(徐州) - Who is better?(中国剩余定理+斐波那契博弈)

    题目链接:点击查看 题目大意:给定k组a和b表示同余式,分别代表n%a=b,求出n后,代表有n个敌人,有两个人我们称为A和B,从A开始杀敌,第一次A可以杀至少一个敌人,至多n-1个敌人,接下来B与A轮 ...

  5. M - Kill the tree 计蒜客 - 42552(2019icpc徐州/树的重心/树形dp)

    vj地址 题目大意:找到每一颗子树的重心 思路: 树的重心的性质: 树的重心如果不唯一,则至多有两个,且这两个重心相邻 通过连接一条端点分别在两个树的边,来将两个树合并成一个,那么新的重心肯定是在原来 ...

  6. 【2019icpc徐州站】Random Access Iterator(概率dp,有坑,tricks)

    题干: Recently Kumiko learns to use containers in C++ standard template library. She likes to use the  ...

  7. 数学、键盘符号和时间复杂度的英语术语及表述方法(编程,标识符,按键,空间复杂度,指数,对数,模运算)

    1 Math Symbols数学符号 integral[ˈɪntɪɡrəl] a必须的 theta[ˈθɪtə]n希腊语字母表中第八个字母 factorial[fækˈtɔːriəl]a阶乘的n阶乘 ...

  8. 妙语速记3000英文单词

    妙语速记3000英文单词 前       言 中国加入wto了!英语作为人们谋生发展的工具越发显得重要起来,甚至有人把文盲的范畴扩大到不懂外语的人,很多人都希望精通英语以为自己的生存和发展创造优势,然 ...

  9. ATP的SDOI2017R1续命记

    Day0 上午Loli竟然不给放假..说什么你们刚放假回来就不用休息了吧啥啥啥的..差评+1 那就只好待在机房复习了..把自己的review.txt里面记录的最后一点没有复习的东西写完了,然后敲了一大 ...

最新文章

  1. BIOS, UEFI, MBR, GPT, GRUB介绍
  2. html如何与py_Web项目如何做单元测试?
  3. SQLSERVER数据仓库的构建与分析
  4. 多线程编程(三)--创建线程之Thread VS Runnable
  5. 【学习笔记】多重背包相关优化——二进制优化/单调队列优化
  6. C++03:论容器的使用
  7. 记一次重构:Android实践从MVC架构到MVP架构
  8. Scratch3.0的作品如何转换成H5或.exe
  9. SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
  10. cipher加密解密
  11. vdagent与vdserver
  12. 项目无法识别 ?. 语法,导致报错Module parse failed: Unexpected token
  13. wps excel查找不定位_【WPS神技能】如何在WPSExcel表格中批量查找两列数据的不同?...
  14. 象棋联机java代码_java实现简单网络象棋游戏
  15. 解决如何获取R的帮助文档
  16. Erlang-VM节点启动名冲突问题
  17. IT外企那点儿事(7):做一个优秀的基层 (转)
  18. 香港1997年是怎样被索罗斯击败的
  19. 中柏平板u盘启动_中柏平板设置u盘启动图文教程
  20. 机器翻译相关论文Topic推荐

热门文章

  1. java消费者中url找不到,java – URL可以使用浏览器访问,但是仍然是具有URLConnection的FileNotFoundException...
  2. java http post 传参数_HttpClient之带参数的post请求
  3. vscode智能提示css的插件_Visual Studio Code 必备插件,主题及语法提示
  4. SpringSecurity权限控制之异常处理方式一
  5. 消息中间件的背景分析
  6. 设计模式在Netty中的应用-观察者模式源码举例
  7. AOP 中必须明白的概念-切面(Aspect)
  8. TCP/IP协议的SYN攻击
  9. 循环尝试,不释放CPU
  10. Collection集合常用功能