bzoj 2251: 外星联络 后缀Trie
题目大意
题解
本来以为这道题应该从01序列的性质入手
结果就想歪了
等自己跳出了01序列这个思维
就马上看到了一颗Trie树。。。
这道题的较难思考的地方在于无法确定出每个字符串的字典序
所以我们想到了和字典序有关的东西sort+string字典树
我们知道所有后缀的所有前缀一定能取到所有字串
字典树的dfs序列得到的dfs序是按照字典序排列的
所以我们可以理所当然地用字典树来搞这个东西
Code
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
inline void read(int &x){
	x=0;char ch;bool flag = false;
	while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
	while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
inline int cat_max(const int &a,const int &b){return a>b ? a:b;}
inline int cat_min(const int &a,const int &b){return a<b ? a:b;}
const int maxn = 3010;
int ch[maxn*maxn][2];
int num[maxn*maxn],nodecnt,n;
char s[maxn];
inline void insert(int i){
	int nw = 0;
	for(;i<n;++i){
		if(ch[nw][s[i]-'0'] == 0) ch[nw][s[i]-'0'] = ++nodecnt;
		nw = ch[nw][s[i] - '0'];
		++num[nw];
	}
}
inline void dfs(int u){
	if(num[u] > 1) printf("%d\n",num[u]);
	if(ch[u][0]) dfs(ch[u][0]);
	if(ch[u][1]) dfs(ch[u][1]);
}
int main(){
	read(n);scanf("%s",s);
	for(int i=0;i<n;++i) insert(i);
	dfs(0);
	getchar();getchar();
	return 0;
}
bzoj 2251: 外星联络 后缀Trie的更多相关文章
- bzoj 2251: [2010Beijing Wc]外星联络 后缀数组
		2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 424 Solved: 232[Submit][ ... 
- 【BZOJ-2251】外星联络    后缀数组 + 暴力
		2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 670 Solved: 392[Submit][ ... 
- [BJWC2010] 外星联络 - 后缀数组
		[BJWC2010] 外星联络 Description 求一个 \(01\) 串中所有重复出现次数大于 \(1\) 的子串所出现的次数,按照字典序排序输出. Solution 预处理出后缀数组和高度数 ... 
- 【BZOJ2251】[2010Beijing Wc]外星联络 后缀数组
		[BZOJ2251][2010Beijing Wc]外星联络 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是, ... 
- BZOJ2251 [2010Beijing Wc]外星联络  后缀数组 + Height数组
		Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin ... 
- [bzoj2251][2010Beijing Wc]外星联络——后缀数组+暴力求解
		Brief Description 找到 01 串中所有重复出现次数大于 1 的子串.并按字典序输出他们的出现次数. Algorithm Design 求出后缀数组之后,枚举每一个后缀,对于每个后缀从 ... 
- 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_[2010Beijing Wc]外星联络_后缀数组
		BZOJ_2251_[2010Beijing Wc]外星联络_后缀数组 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻 找外星人的 ... 
随机推荐
- 存储过程清理N天前数据
			CREATE OR REPLACE PROCEDURE APICALL_LOG_INTERFACE_CLEAN ( CLEANDAY IN Number --天数 ) AS v_cleanDay nu ... 
- Django之sitemap
			##########settings.py SITE_ID=1 # Application definition # taggit tag INSTALLED_APPS = [ 'myblog', ' ... 
- php信号处理
			pcntl pcntl_signal 信号注册函数 pcntl_alarm 指定秒数中断程序执行任务. 每次执行只会有一个定时器生效,若之前计时器还没结束就定义新定时器,会替代之前定时器并返回之前定时 ... 
- linux history 命令 禁用history
			保存在.bash_history文件中,默认1000条,你也可以更改这个 值 !!:上一个指令 !number 运行第几个指令 查看命令历史的时间戳,那么可以执行: # export HISTTIME ... 
- Nginx 经验小结
			chmod 777 永远不要 使用 777,有时候可以懒惰的解决权限问题, 但是它同样也表示你没有线索去解决权限问题,你只是在碰运气. 你应该检查整个路径的权限,并思考发生了什么事情. 把 root ... 
- 平滑处理 - cvSmooth() 函数实现
			前言 平滑是图像处理中很重要的操作,其主要用途是降噪.Open CV 提供了 5 种不同的平滑方法:简单模糊,简单无缩放变换的模糊,中值模糊,高斯模糊和双边滤波,它们都通过函数 cvSmooth 实现 ... 
- JavaWeb学习总结第一篇--初识JavaWeb
			JavaWeb学习总结(一)-- 初识JavaWeb 一:Web相关概念 Web程序也就是一般所说的网站,由服务器.客户端浏览器和网络组成.Web程序的好处就是使用简单,不需要安装.学习,有一台电脑. ... 
- ndk javah配置
			Location: C:\Program Files\Java\jdk1.6.0_25\bin\javah.exe Working Directory: ${project_loc} Argument ... 
- WPF实现带全选复选框的列表控件
			本文将说明如何创建一个带全选复选框的列表控件.其效果如下图: 这个控件是由一个复选框(CheckBox)与一个 ListView 组合而成.它的操作逻辑: 当选中“全选”时,列表中所有的项目都会被选中 ... 
- WCP人员管理之添加人员
			1.用户管理页面 其中 : var url_formActionUser = "user/form.do";//增加.修改.查看URL 2. 通过 /form 路由, 转到 Use ... 
