bzoj-2251 外星联络
题意:
给出一个字符串,求出现次数超过1的子串的出现个数。
字符串长度<=3000;
题解:
题目问的是子串的个数。那么首先我们要找到全部的子串。
而字符串的全部后缀的前缀能够不重不漏的表示全部子串;
那么假设将全部的后缀增加trie树。每一个经过的结点——也就是这个后缀的前缀——计数+1。
然后题目要求按字典序输出。利用一下trie树性质搞好就完了。
指针版trie好慢啊。
。。
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 3100
using namespace std;
struct trie
{
int cnt;
trie *next[2];
trie()
{
next[0]=next[1]=NULL;
cnt=0;
}
}*root=new trie();
char str[N];
void insert(char *s)
{
bool index;
trie *p=root;
while(*s!='\0')
{
index=*s-'0';
if(p->next[index]==NULL)
p->next[index]=new trie();
p=p->next[index];
p->cnt++;
s++;
} }
void dfs(trie *p)
{
if(p->cnt>1)
printf("%d\n",p->cnt);
if(p->next[0]!=NULL)
dfs(p->next[0]);
if(p->next[1]!=NULL)
dfs(p->next[1]);
}
int main()
{
int n,m,i,j,k;
scanf("%d%s",&n,str+1);
for(i=1;i<=n;i++)
insert(str+i);
dfs(root);
return 0;
}
bzoj-2251 外星联络的更多相关文章
- bzoj 2251: 外星联络 后缀Trie
		
题目大意 http://www.lydsy.com/JudgeOnline/problem.php?id=2251 题解 本来以为这道题应该从01序列的性质入手 结果就想歪了 等自己跳出了01序列这个 ...
 - bzoj 2251: [2010Beijing Wc]外星联络 后缀数组
		
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 424 Solved: 232[Submit][ ...
 - BZOJ 2251: [2010Beijing Wc]外星联络
		
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 795 Solved: 477[Submit][ ...
 - 2251: [2010Beijing Wc]外星联络
		
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 801 Solved: 481[Submit][ ...
 - 【BZOJ-2251】外星联络    后缀数组 + 暴力
		
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 670 Solved: 392[Submit][ ...
 - 【BZOJ2251】[2010Beijing Wc]外星联络 后缀数组
		
[BZOJ2251][2010Beijing Wc]外星联络 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是, ...
 - BZOJ_2251_[2010Beijing Wc]外星联络_后缀数组
		
BZOJ_2251_[2010Beijing Wc]外星联络_后缀数组 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻 找外星人的 ...
 - [bzoj2251][2010BeiJing Wc]外星联络_后缀数组
		
外星联络 bzoj-2251 2010-BeiJing Wc 题目大意:题目链接. 注释:略. 想法: 这咋做啊????一看数据范围才$3\cdot 10^3$. 建立后缀数组. 所以我们将所有后缀排 ...
 - [BJWC2010] 外星联络 - 后缀数组
		
[BJWC2010] 外星联络 Description 求一个 \(01\) 串中所有重复出现次数大于 \(1\) 的子串所出现的次数,按照字典序排序输出. Solution 预处理出后缀数组和高度数 ...
 - 外星联络(bzoj 2251)
		
Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息. ...
 
随机推荐
- SpringBoot基础之MockMvc单元测试
			
SpringBoot创建的Maven项目中,会默认添加spring-boot-starter-test依赖.在<5分钟快速上手SpringBoot>中编写的单元测试使用了MockMvc.本 ...
 - 挑战程序设计2 KD树
			
Range Query - Range Search (kD Tree) Time Limit : 1 sec, Memory Limit : 262144 KB Japanese version i ...
 - hdu 6021 MG loves string
			
MG loves string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others ...
 - 前端居中模板(常用HTML模板)
			
0.效果:
 - poj 2318 TOYS 点与矩形的关系
			
题目链接 题意 有一个矩形盒子,\(n(n\leq 5e4)\)条线段将其分成了\(n+1\)个区域(每条线段的两个端点分别在矩形的上边和下边,且线段互不相交).现向盒子中扔\(m(m\leq 5e4 ...
 - 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---0
			
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: <Linux命令行与shell脚本 ...
 - linux .so .a .o 文件
			
linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.so 为共享库,是shared object,用于动态连接的,和dll差不多.a为静态库 ...
 - lunix cat tail more等用法
			
cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从键盘创建一个文件. $ cat > filename 只能创建新文件,不能编辑已有文件. 3.将几 ...
 - Codeforces Educational Round 33 题解
			
题目链接 Codeforces Educational Round 33 Problem A 按照题目模拟,中间发现不对就直接输出NO. #include <bits/stdc++.h> ...
 - redis-bitmap 命令使用的一些帖子
			
https://segmentfault.com/a/1190000009841792?utm_source=tag-newest http://blog.csdn.net/lglgsy456/art ...