【LOJ#2507】[CEOI2011]Matching(KMP,树状数组)

题面

LOJ

题解

发现要做的是排名串的匹配。
然后我们考虑把它转成这个位置之前有多少个数小于当前这个数,这样子只要每个位置都对应相等那么一定是合法的。
然后就可以类似\(KMP\)的预处理出一个\(nxt\)数组,然后再类似\(KMP\)的匹配。
因为需要支持动态求前面一段区间有多少个数比这个数小,所以需要用\(BIT\)维护。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
#define ll long long
#define MAX 1000100
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
vector<int> Ans;
int c[MAX],N,n,m,a[MAX],S[MAX],p[MAX],nt[MAX],rk[MAX];
int lb(int x){return x&(-x);}
void Add(int x,int w){while(x<=N)c[x]+=w,x+=lb(x);}
int getsum(int x){int s=0;while(x)s+=c[x],x-=lb(x);return s;}
int main()
{n=read();m=read();N=n;for(int i=1;i<=n;++i)p[read()]=i;for(int i=1;i<=m;++i)S[i]=a[i]=read();sort(&S[1],&S[m+1]);for(int i=1;i<=m;++i)a[i]=lower_bound(&S[1],&S[m+1],a[i])-S;for(int i=1;i<=n;++i)Add(p[i],1),rk[i]=getsum(p[i]);memset(c,0,sizeof(c));nt[0]=nt[1]=0;for(int i=2,lst=2;i<=n;++i){int t=nt[i-1];while(t&&getsum(p[i])+1!=rk[t+1]){int v=nt[t];while(lst<i-v)Add(p[lst++],-1);t=v;}if(getsum(p[i])+1==rk[t+1])++t;nt[i]=t;Add(p[i],1);}memset(c,0,sizeof(c));N=m;for(int i=1,j=0,lst=1;i<=m;++i){while(j&&getsum(a[i])+1!=rk[j+1]){int v=nt[j];while(lst<i-v)Add(a[lst++],-1);j=v;}if(getsum(a[i])+1==rk[j+1])++j;if(j==n){Ans.push_back(i-n+1);int v=nt[j];while(lst<i-v+1)Add(a[lst++],-1);j=v;}Add(a[i],1);}printf("%d\n",(int)Ans.size());for(int v:Ans)printf("%d ",v);puts("");return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/11149808.html

【LOJ#2507】[CEOI2011]Matching(KMP,树状数组)相关推荐

  1. hdu 4125 Moles(kmp+树状数组)

    题目链接:hdu 4125 Moles 题意: 给你n个数,让你按键值建一个平衡二叉树,然后奇数为0,偶数为1,然后可以遍历这颗树得到一个欧拉序列,现在给你一个串,问你出现了几次. 题解: 建树的时候 ...

  2. poj 3167(KMP+树状数组)

    之前自己在做题的时候在网上找别人的题解,虽然当时理解,但时间一久就忘了.所以开个这个东西来记录自己的学习进程,方便自己的回顾,以及给他人提供题解. 开始冲击明年高二的省选!不再颓废! 好了,下面进入正 ...

  3. 2017 ACM-ICPC乌鲁木齐网络赛 G. Query on a string(KMP+树状数组)

    题目链接:https://www.jisuanke.com/contest/870 题意: 给出两个字符串S和T,Q次操作:①C a b表示将第a个字符改为b:②Q l r表示T在S的子串[l, r] ...

  4. LOJ P2448 :无尽的生命 树状数组 + 离散化

    传送门 分析 跟785E题意差不多,但是785E是在线求法,个人感觉更复杂一下 我们将需要操作的点进行离散化,这样就可以对这些点用树状数字求逆序对,同时还需要维护离散化后每两个点之间的数的逆序对的数量 ...

  5. 「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组

    题目描述 回忆树是一棵树,树边上有小写字母. 一次回忆是这样的:你想起过往,触及心底--唔,不对,我们要说题目. 这题中我们认为回忆是这样的:给定 \(2\) 个点 \(u,v\) (\(u\) 可能 ...

  6. HDU 4125 Moles 树状数组 + KMP

    这题的重点就在于建树, 题目读懂以后, 就会发现, 树建好以后就是一颗排序二叉树. 于是每次用树状数组二分找该节点的插入点. 树建完以后DFS得到字符串, 由于节点非常多, 于是要手写栈. 字符串得到 ...

  7. HDU 4125 Moles 二叉排序树 树状数组 kmp

    题目链接 题意 将一串数( n≤1e6 n\leq 1e6)依次插入到一棵二叉排序树中, dfs dfs一遍,将经过的每个节点的信息加到一个串尾(如果当前节点为奇数则加 ′1′ '1'否则加 ′0′ ...

  8. loj #535. 「LibreOJ Round #6」花火 树状数组求逆序对+主席树二维数点+整体二分...

    $ \color{#0066ff}{ 题目描述 }$ 「Hanabi, hanabi--」 一听说祭典上没有烟火,Karen 一脸沮丧. 「有的哦-- 虽然比不上大型烟花就是了.」 还好 Shinob ...

  9. 树状数组的理解(前缀和 and 差分)

    二更-- 有神仙反映数星星那个题外链炸了,我决定把图给你们粘一下,汉语翻译的话在一本通提高篇的树状数组那一章里有,同时也修改了一些汉语语法的错误 这段时间学了线段树组,当神仙们都在学kmp和hash的 ...

最新文章

  1. R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标
  2. it oracle 培训,Oracle数据库技术培训_OracleDBA数据库工程师_Oracle数据库在线学习视频教程_IT职业培训-51CTO学院_精培学院...
  3. 【python】再说装饰器与闭包的写法
  4. 电脑主机,晚上就煎肉,把隔壁宿舍都馋哭了!
  5. BugkuCTF-MISC题低位的色彩
  6. 震惊!腾讯要建AI鹅厂,百度让狗刷脸购物,锤子R-1真机披露
  7. uni app 调用网络打印机_一套代码,七端运行-uni-app
  8. iOS中的坑:URL不识别##
  9. Nginx漏洞扫描及修复
  10. Android聊天软件开发(基于网易云IM即时通讯)——环境搭建(一)
  11. csdn广告过滤油猴子(Greasemonkey)脚本(同样适用于暴力猴 tampermonkey/Violentmonkey 在浏览器Firefox/chrome都可以用,全部复制粘贴即可)
  12. 解析SSH和SSM两大框架的组成及其区别
  13. 弱电工程行业管理软件
  14. 计算机是怎么运行的?为什么它可以自动化的工作?这和时钟信号又有什么关系?
  15. html自动改成繁体怎么做,如何将繁体字转换成简体字,繁体字转换器在线转换,简体字转换为繁体字...
  16. 中国可以用计算机吗,能用计算器吗?中国小学四年级数学题让外国大学生崩溃!...
  17. 另类推柿子 Crypto Lights
  18. php crypt md5,PHP crypt()-返回的md5哈希
  19. linux log4j2.xml,动态配置log4j2.xml日志输出文件的位置
  20. 【EMNLP 2021】SimCSE:句子嵌入的简单对比学习 【CVPR 2021】理解对比学习损失函数及温度系数

热门文章

  1. Visual Studio Code 1.42 发布
  2. VSCode TODO 帮助扩展
  3. 计算机在矿山企业中的应用,计算机在矿山工业中的应用与发展
  4. 按相反的顺序输出列表的元素python_Python练习实例32 | 如何以相反的顺序来输出列表的值?...
  5. SSM运行异常 org.springframework.beans.factory.UnsatisfiedDependencyException
  6. python代码_零基础小白必看篇:Python代码注释规范代码实例解析操作(收藏)
  7. ie检查服务器证书吊销,浏览器弹出“该站点安全证书吊销信息不可用是否继续”解决方法...
  8. linux nand 坏块_韦东山-NAND 上面都是坏块怎么办啊? - 百问网嵌入式问答社区
  9. gd动态曲线 php_PHP 高级编程之多线程
  10. 计算机绘图图库的创建,工程制图与计算机绘图.doc