博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bzoj2251 [2010Beijing Wc]外星联络
阅读量:7223 次
发布时间:2019-06-29

本文共 1788 字,大约阅读时间需要 5 分钟。

Time Limit: 30 Sec  Memory Limit: 256 MB
Submit: 867  Solved: 522

Description

小 P 在看过电影《超时空接触》(Contact)之后被深深的打动,决心致力于寻

找外星人的事业。于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星
人发来的信息。虽然他收听到的仅仅是一些噪声,但是他还是按照这些噪声的高
低电平将接收到的信号改写为由 0 和 1 构成的串, 并坚信外星人的信息就隐藏在
其中。他认为,外星人发来的信息一定会在他接受到的 01 串中重复出现,所以
他希望找到他接受到的 01 串中所有重复出现次数大于 1 的子串。但是他收到的
信号串实在是太长了,于是,他希望你能编一个程序来帮助他。

Input

输入文件的第一行是一个整数N ,代表小 P 接收到的信号串的长度。 

输入文件第二行包含一个长度为N 的 01 串,代表小 P 接收到的信号串。

Output

输出文件的每一行包含一个出现次数大于1 的子串所出现的次数。输出的顺

序按对应的子串的字典序排列。

Sample Input

7
1010101

Sample Output

3
3
2
2
4
3
3
2
2

HINT

 

  对于 100%的数据,满足 0 <=  N     <=3000 

 

Source

 

建出后缀数组,然后按rank从大到小的顺序,根据height数组暴力查值。具体见代码。

夜常视力骤降,查错无力。r[]数组下标打岔一位半天没看出来。

然后玩了一发输出优化,输出x的时候忘了%10,尴尬

 

1 /*by SilverN*/ 2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 const int mxn=5010;10 int read(){11 int x=0,f=1;char ch=getchar();12 while(ch<'0' || ch>'9'){ if(ch=='-')f=-1;ch=getchar();}13 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}14 return x*f;15 }16 void write(int x){17 if(x>9)write(x/10);18 putchar('0'+x%10);19 return;20 }21 int sa[mxn],rk[mxn],ht[mxn],r[mxn];22 int wa[mxn],wb[mxn],wv[mxn],cnt[mxn];23 char s[mxn];24 inline int cmp(int *r,int a,int b,int l){25 return r[a]==r[b] && r[a+l]==r[b+l];26 }27 void GetSA(int *sa,int n,int m){28 int i,j,k;29 int *x=wa,*y=wb;30 for(i=0;i
=0;i--)sa[--cnt[x[i]]]=i;34 for(int j=1,p=0;p
<<=1,m=p){35 for(p=0,i=n-j;i
=j)y[p++]=sa[i]-j;37 for(i=0;i
=0;i--)sa[--cnt[wv[i]]]=y[i];43 swap(x,y);44 p=1;x[sa[0]]=0;45 for(i=1;i
=1 && ht[l]>=j;l--);78 for(r=i+1;r<=n &&ht[r]>=j;r++);79 if(r-l>1){write(r-l);puts("");}80 }81 }82 return 0;83 }

 

转载于:https://www.cnblogs.com/SilverNebula/p/6648712.html

你可能感兴趣的文章
iOS开发之手势识别
查看>>
Tomcat对keep-alive的实现逻辑
查看>>
算法系列15天速成——第十二天 树操作【中】
查看>>
并发集合(六)使用线程安全的NavigableMap
查看>>
高可用Hadoop平台-集成Hive HAProxy
查看>>
泛函编程(0)-什么是泛函编程
查看>>
纸上谈兵: 伸展树 (splay tree)[转]
查看>>
Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题
查看>>
金三银四背后,一个 Android 程序员的面试心得
查看>>
利用广播监听网络状态,然后刷新listView、gridView、RecyclerView等。
查看>>
go语言实战教程:项目文件配置和项目初始化运行
查看>>
SVG学习笔记(二)做一个Loading动画
查看>>
webpack学习(六) -- webpack自动生成html文件并引入js包
查看>>
被操纵的BCE与去中心化的BCH
查看>>
Spring-bean的几种循环依赖方式
查看>>
Linux相关分享
查看>>
Python进阶之道
查看>>
滑动吸顶效果
查看>>
闭包的一点浅见
查看>>
settimeout和promise执行顺序
查看>>