Luogu P4341 [BJWC2010]外星联络
暴力思路:
暴力枚举子串,插入trie树中,按字典序输出大于1的end的值
时间复杂度:n3
结果:TLE 0分
。。。非常尴尬的一点不剩
正解思路
经过观察发现,可以只枚举后缀,统计时输出sum的值
code
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e7;
int n,cnt;
string ss;
struct node{
int sum,end,son[2];
}trie[MAXN];
void insert(string s)
{
int now=0,x;
for(int i=0;i<s.length();i++){
x=trie[now].son[s[i]-'0'];
if(x==0){
x=trie[now].son[s[i]-'0']=++cnt;
}
trie[x].sum++;
now=x;
}
}
void build()
{
for(int i=0;i<n;i++){
insert(ss.substr(i,n-i));
}
}
void query(int now)
{
if(trie[now].sum>1){
cout<<trie[now].sum<<endl;
}
if(trie[now].son[0]){
query(trie[now].son[0]);
}
if(trie[now].son[1]){
query(trie[now].son[1]);
}
}
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
cin>>n>>ss;
build();
query(0);
return 0;
}
据听说正解是SA
可是我太弱了不会呀
upd 2019.9.13
markdown 炸了
又重发了一遍
Luogu P4341 [BJWC2010]外星联络的更多相关文章
- [洛谷P4341][BJWC2010]外星联络
题目大意:给你一个长度为$n(n\leqslant3\times10^3)$的字符串,要你求出其中出现次数大于$1$的子串,并按字典序输出次数. 题解:建$SAM$后求出每个点的$size$,最后按字 ...
- [BJWC2010] 外星联络 - 后缀数组
[BJWC2010] 外星联络 Description 求一个 \(01\) 串中所有重复出现次数大于 \(1\) 的子串所出现的次数,按照字典序排序输出. Solution 预处理出后缀数组和高度数 ...
- [BZOJ2251/BJWC2010]外星联络
Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息. ...
- 【BZOJ-2251】外星联络 后缀数组 + 暴力
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 670 Solved: 392[Submit][ ...
- 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][ ...
- 【BZOJ2251】[2010Beijing Wc]外星联络 后缀数组
[BZOJ2251][2010Beijing Wc]外星联络 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是, ...
- 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)之后被深深的打动,决心致力于寻 找外星人的 ...
随机推荐
- Eviews作时间序列分析的一个实例
时间序列分析是作时间序列数据预测的一个重要部分,由于此次实验室竞赛也用到了时间序列分析,就在此说一下平稳性分析以及非平稳处理的方法: 1.判断平稳性 1.1平稳性的定义 ...
- 使用canal增量同步mysql数据库信息到ElasticSearch
本文介绍如何使用canal增量同步mysql数据库信息到ElasticSearch.(注意:是增量!!!) 1.简介 1.1 canal介绍 Canal是一个基于MySQL二进制日志的高性能数据同步系 ...
- C语言程序设计100例之(13):最大子段和
例13 最大子段和 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大.例如在序列2,-4,3,-1,2,-4,3中,最大的子段和为4,该子段为3,-1,2. 输入格式 第一 ...
- 1+x 证书 Web 前端开发中级理论考试(试卷 6 )
1+x 证书 Web 前端开发中级理论考试(试卷 6 ) 官方QQ群 1+x 证书 web 前端开发初级对应课程分析 http://blog.zh66.club/index.php/archives/ ...
- Javascript模块化开发4——Grunt常用模块
一.copy 用于复制文件与目录. grunt-contrib-copy 二.eslint 检测代码的合理性. grunt-eslint 常见参数: 1.quiet 是否只显示errors.默认值fa ...
- ansible命令参数介绍
-m:要执行的模块,默认为command -a:模块的参数 -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置 -k:提示输入ssh登录密码.当使用密码验证的时候用 -s:su ...
- ElasticSearch安装中文分词器IK
1.安装IK分词器,下载对应版本的插件,elasticsearch-analysis-ik中文分词器的开发者一直进行维护的,对应着elasticsearch的版本,所以选择好自己的版本即可.IKAna ...
- Razor 页面解说
自己开始从头深造- 本是想将时间缩短,但发现自己还是很难呀.希望你理解吧,这里的知识 是 页面的基本信息.也页面的跳转关系和 Tag的帮助标签. Section PartView. @page ...
- SpringBoot(七) SpringBoot整合Log4j
第一种打印debug日志方式: logging.level.com.demo.mapper: debug 第二种打印debug日志方式: 在resource文件夹下新建:logback.xml < ...
- vuejs之路由应用之二
现在我们开始一个应用: 一个应用中包含4个组件,我们暂且可以想象是4个页面,首先是App.vue,App.vue中又包含3个子组件:About.vue,Home.vue,Document.vue Ap ...