Description

同上题.

Sol

KMP+树状数组.

写这题的时候我灰常naive...不管了...直接贴代码...

Code

  1. /**************************************************************
  2. Problem: 1461
  3. User: BeiYu
  4. Language: C++
  5. Result: Accepted
  6. Time:756 ms
  7. Memory:13032 kb
  8. ****************************************************************/
  9.  
  10. #include<cstdio>
  11. #include<cstring>
  12. #include<iostream>
  13. using namespace std;
  14. #define N 500005
  15. #define M 10005
  16. int a[N],b[N],rk1[N],rk2[N],f[N],ans[N];int c[M];
  17. int n,m,s,t;
  18. inline int in(int x=0,char ch=getchar()){
  19. while(ch>'9'||ch<'0') ch=getchar();
  20. while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
  21. return x;
  22. }
  23. inline int lowbit(int x){return x&(-x);}
  24. inline void add(int x,int v){while(x<=s) c[x]+=v,x+=lowbit(x);}
  25. inline int sum(int x,int res=0){while(x) res+=c[x],x-=lowbit(x);return res;}
  26. int main(){
  27. n=in(),m=in(),s=in();
  28. for(int i=0;i<n;i++) a[i]=in();
  29. for(int i=0;i<m;i++) b[i]=in(),add(b[i],1),rk1[i]=sum(b[i]-1),rk2[i]=sum(b[i]);
  30. memset(c,0,sizeof(c));
  31. for(int i=1,j;i<m;i++){
  32. j=f[i];add(b[i],1);
  33. while(j&&(sum(b[j]-1)!=rk1[i]||sum(b[j])!=rk2[i])){
  34. for(int p=i-j;p<i-f[j];p++) add(b[p],-1);
  35. j=f[j];
  36. }
  37. f[i+1]=(rk1[j]==sum(b[i]-1)&&rk2[j]==sum(b[i]))?j+1:0;
  38. }
  39. memset(c,0,sizeof(c));
  40. for(int i=0,j=0;i<n;i++){
  41. add(a[i],1);
  42. while(j&&(sum(a[i]-1)!=rk1[j]||sum(a[i])!=rk2[j])){
  43. for(int p=i-j;p<i-f[j];p++) add(a[p],-1);
  44. j=f[j];
  45. }
  46. if(sum(a[i]-1)==rk1[j]&&sum(a[i])==rk2[j]) j++;
  47. if(j==m){
  48. ans[++t]=i-j+1;
  49. for(int p=i-j+1;p<=i;p++) add(a[p],-1);
  50. j=0;
  51. }
  52. }
  53. printf("%d\n",t);
  54. for(int i=1;i<=t;i++) printf("%d\n",ans[i]+1);
  55. return 0;
  56. }

  

BZOJ 1461: 字符串的匹配的更多相关文章

  1. [bzoj1892][bzoj2384][bzoj1461][Ceoi2011]Match/字符串的匹配_KMP_树状数组

    2384: [Ceoi2011]Match 1892: Match 1461: 字符串的匹配 题目大意: 数据范围: 题解: 很巧妙的一道题呀. 需要对$KMP$算法有很深的理解才行. 首先我们需要发 ...

  2. Oracle添加数据报文字与格式字符串不匹配错误

    今天在学习Oracle时碰到一个错:文字与格式字符串不匹配. 我在Oracle数据库中创建了一张表: --创建员工表employee create table employee ( empon ) n ...

  3. oracle文字与格式字符串不匹配的解决

    oracle文字与格式字符串不匹配的解决 oracle的日期时间类型 在往oracle的date类型插入数据的时候,记得要用to_date()方法. 如insert into CUSLOGS(STAR ...

  4. 带’*’号字符串的匹配

    目标: 判断源字符串中是否含有指定子串,子串可能会有*号通配符. 初步测试没问题.记录下来.后面要是有问题再来纠正. #include <string> using namespace s ...

  5. Java字符串的匹配问题,String类的matches方法与Matcher类的matches方法的使用比较,Matcher类的matches()、find()和lookingAt()方法的使用比较

    参考网上相关blog,对Java字符串的匹配问题进行了简单的比较和总结,主要对String类的matches方法与Matcher类的matches方法进行了比较. 对Matcher类的matches( ...

  6. java.sql.SQLException:ORA-01861:文字和格式字符串不匹配

    1.错误描述 java.sql.SQLException:ORA-01861:文字和格式字符串不匹配 2.错误原因 字段名为statis_date在数据库中存储的数据类型是Date,而在Java中拼接 ...

  7. 异常-----java.sql.SQLException:ORA-01861:文字和格式字符串不匹配

    1.错误描述 java.sql.SQLException:ORA-01861:文字和格式字符串不匹配 2.错误原因 字段名为statis_date在数据库中存储的数据类型是Date,而在Java中拼接 ...

  8. Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法

    一.写sql的方式插入到Oracle中 往oracle中插入时间  '2007-12-28 10:07:24'如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07: ...

  9. C++实现的字符串模糊匹配

    C++基本没有正则表达式功能,当然像Boost里提供了正则.本文来源于博客园园友的一篇文章,请看: C/C++ 字符串模糊匹配 很早之前就看过这篇文章,原作者的需求很明确.代码实现也很好. 之所以又写 ...

随机推荐

  1. JavaWeb学习笔记——jsp内置对象

  2. 重启nginx

    在env/nginx/sbin目录下输入:nginx,即可重启

  3. HTML \ XHTML \XML 的区别

    虽然是很简单的知识,但如果总是在需要的时候去查找,不需要的时候就丢掉,未免心里总是觉的不踏实.因为你就像是垃圾收购站,有垃圾(知识)就往里面拖,拖不下了就丢掉一些(忘了).不去整理,也因此也不知道丢的 ...

  4. aufomaper Queryable Extensions ProjectTo

    When using an ORM such as NHibernate or Entity Framework with AutoMapper's standard Mapper.Map funct ...

  5. jQuery监听键盘事件及相关操作使用教程

    一.首先需要知道的是: 1.keydown() keydown事件会在键盘按下时触发. 2.keyup() keyup事件会在按键释放时触发,也就是你按下键盘起来后的事件 3.keypress() k ...

  6. OC-Q&A

    How to declare a string in Objective-C ? A C string is just like in C. char myCString[] = "test ...

  7. ZooKeepr日志清理【转】

    转自 :@ni掌柜nileader@gmail.com 地址 数据文件管理 默认情况下,ZK的数据文件和事务日志是保存在同一个目录中,建议是将事务日志存储到单独的磁盘上. 1 数据目录 ZK的数据目录 ...

  8. JS禁止WEB页面鼠标事件大全

    <!--禁止鼠标右键代码-->:<noscript><ifra:<scriptlanguage=javas:<!--:if(window.Event):doc ...

  9. mfc 调试 弹消息

    AfxMessageBox(_T("edit change msg")); OutputDebugString(L"jian "); CString str; ...

  10. BufferedReader readLine()方法

    控制台输入字符串之后回车,后台接收传来的字符串,代码如下: import java.io.BufferedReader; import java.io.IOException; import java ...