BZOJ 2251 [2010Beijing Wc]外星联络

原创 2016年08月28日 21:13:43

Description
小 P 在看过电影《超时空接触》(Contact)之后被深深的打动,决心致力于寻
找外星人的事业。于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星
人发来的信息。虽然他收听到的仅仅是一些噪声,但是他还是按照这些噪声的高
低电平将接收到的信号改写为由 0 和 1 构成的串, 并坚信外星人的信息就隐藏在
其中。他认为,外星人发来的信息一定会在他接受到的 01 串中重复出现,所以
他希望找到他接受到的 01 串中所有重复出现次数大于 1 的子串。但是他收到的
信号串实在是太长了,于是,他希望你能编一个程序来帮助他。


【题目分析】
按理说这种东西用后缀数组才是正解,但是强行使用trie树来构造再dfs一遍貌似也是可以的。


【代码】

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
char s[3001];
int trie[9000001][2];
int end[9000001],tot;
inline void ins(char *s)
{
    int l=strlen(s);int now=0;
    for (int i=0;i<l;++i)
    {
        int tmp=s[i]-'0';
        if (!trie[now][tmp]) trie[now][tmp]=++tot;
        now=trie[now][tmp];
        end[now]++;
    }
}
inline void dfs(int k)
{
    if (end[k]>1&&k) cout<<end[k]<<endl;
    if (trie[k][0]) dfs(trie[k][0]);
    if (trie[k][1]) dfs(trie[k][1]);
}
int main()
{
    int n; cin>>n;
    scanf("%s",s+1);
    for (int i=1;i<=n;++i) ins(s+i);
    dfs(0);
}
版权声明:标注来源之后可随意引用[请记得添加友链]

相关文章推荐

BZOJ 2251: [2010Beijing Wc]外星联络|后缀数组

后缀数组求出height数组 然后扫一边 暴力统计出解就可以了 #include #include #include #include #include #include #include #i...
  • ws_yzy
  • ws_yzy
  • 2016年01月12日 15:30
  • 434

BZOJ 2251 Beijing WC 2010 外星联络 后缀数组

给出一个01串,求:出现次数大于1 的子串所出现的次数。 不过数据范围有点迷。。 后缀数组模板题。 构建出后缀数组以后,每个后缀都会产生子串。 比如ababa:a aba ababa ba b...

BZOJ2251: [2010Beijing Wc]外星联络 后缀数组

2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 791  Solved: 475 [Subm...
  • Oakley_
  • Oakley_
  • 2017年01月12日 20:20
  • 302

[2010Beijing Wc]外星联络 后缀数组

题目要求求出所有的子串,考虑到每个子串都必定是一个后缀的前缀,可以使用后缀数组。         对于后缀数组sa[],发现按顺序i=0 to n-1;j=sa[] to n-1枚举,其中每个子串必...

BZOJ2251 外星联络 (Trie树)

题目大意给出一个01串,要求按照字典序输出在串中出现两次以上的子串的出现次数。题解我是在hzwer学长的后缀数组专题中看到这道题的,但是我并没有很理解黄学长的暴力是怎么思考的…于是我在另一个地方得到了...

bzoj2251 外星联络

trie树的dfs
  • sdfzyhx
  • sdfzyhx
  • 2016年06月19日 23:07
  • 517

【BZOJ】2252: [2010Beijing wc]矩阵距离

Description   假设我们有矩阵,其元素值非零即1 a11…… a1m ……………. an1…….anm   定义aij与akl之间的距离为D(aij,akl)=abs(...

[BZOJ 2253][2010 Beijing wc]纸箱堆叠:CDQ分治|DP

点击这里查看原题首先这是一个严格三维偏序问题,可以用CDQ分治来做,其次这又是一个三维的最长上升子序列问题,dp[i]表示以第i个箱子为结尾的最长长度。 于是我们先将所有箱子按x大小排序,因为要严格...

【bzoj 1923】[Sdoi2010]外星千足虫(高斯消元)

执笔生宣,浅墨入画,绘一幅丹青风华

[题解]bzoj1923(SDOI2010)外星千足虫

DescriptionInput第一行是两个正整数 N, M。 接下来 M行,按顺序给出 Charles 这M次使用“点足机”的统计结果。每行 包含一个“01”串和一个数字,用一个空格隔开。“01”串...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BZOJ 2251 [2010Beijing Wc]外星联络
举报原因:
原因补充:

(最多只允许输入30个字)