bzoj2251】的更多相关文章

[BZOJ2251][2010Beijing Wc]外星联络 Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息.虽然他收听到的仅仅是一些噪声,但是他还是按照这些噪声的高低电平将接收到的信号改写为由 0 和 1 构成的串, 并坚信外星人的信息就隐藏在其中.他认为,外星人发来的信息一定会在他接受到的 01 串中重复出现,所以他希望找到他接受到的 01 串中所有重…
外星联络 bzoj-2251 2010-BeiJing Wc 题目大意:题目链接. 注释:略. 想法: 这咋做啊????一看数据范围才$3\cdot 10^3$. 建立后缀数组. 所以我们将所有后缀排序后,每个后缀的$ht[i]+1$的位置显然这个子串是第一次出现. 我们统计每个子串第一次出现的位置然后统计有多少个即满足题意. 那么如何统计呢?我们只需要想后枚举到第一个$ht_j>ht_i$的即可因为$ht$有传递性. Code: #include <stdio.h> #include…
问题描述 LG4341 BZOJ2251 BZOJ需要权限号 题解 字符串的性质:一个字符串\(s\)所有的字串,等于\(s\)所有后缀的前缀. 枚举这个字符串的每一个后缀,将其插入一个\(\mathrm{Trie}\) 在插入\(\mathrm{Trie}\)的过程中可以非常方便的维护这个后缀的每个前缀. 最后从\(root\)开始对整棵\(\mathrm{Trie}\)进行一次遍历即可. \(\mathrm{Code}\) #include<bits/stdc++.h> using nam…
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 670  Solved: 392[Submit][Status][Discuss] Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息.虽然他收听到的仅仅是一些噪声,但是他还是按照这些噪声的高低电平将接收到的信号…
因为n很小,所以对于串s的每一个后缀,都把其加入字典树中,并且经过一个字典树节点,该节点权值就+1. 输出时因为要字典序最小,所以字典树先走0分叉,再走1分叉,如果节点权值大于等于2就输出 代码 #include<cstdio> ; ],tot,i; char s[N]; void gao(int x) { ,i; for (i=x;i<n;i++) { ]==) f[t][s[i]-]=++tot; t=f[t][s[i]-]; sum[t]++; } } void out(int x…
以前看到这道题想到的是SA,做起来不是很美观 学了SAM之后,这题简直是随便搞 ..,'] of longint; s,sa,mx,w,fa:..] of longint; i,n,last,t:longint; ch:char; procedure add(c:char); var p,np,nq,q:longint; begin p:=last; inc(t); np:=t; last:=t; mx[np]:=mx[p]+; w[np]:=; ) ) do begin go[p,c]:=np…
Brief Description 找到 01 串中所有重复出现次数大于 1 的子串.并按字典序输出他们的出现次数. Algorithm Design 求出后缀数组之后,枚举每一个后缀,对于每个后缀从height[i]+1枚举(因为height[i]之前已经计算过了),然后对于这样的每个前缀看一看上下能够分别延伸到哪里. 我不会分析复杂度,但是这个算法还是能跑得过得. Notice 开始想了一个复杂度低但是错误的算法,然后思路就被局限住了.所以,以后想不到好的算法的时候一定要先想一个最暴力的暴力…
题意: 给出一个字符串,求出现次数超过1的子串的出现个数. 字符串长度<=3000: 题解: 题目问的是子串的个数.那么首先我们要找到全部的子串. 而字符串的全部后缀的前缀能够不重不漏的表示全部子串: 那么假设将全部的后缀增加trie树.每一个经过的结点--也就是这个后缀的前缀--计数+1. 然后题目要求按字典序输出.利用一下trie树性质搞好就完了. 指针版trie好慢啊. .. 代码: #include<stdio.h> #include<string.h> #inclu…
Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息.虽然他收听到的仅仅是一些噪声,但是他还是按照这些噪声的高低电平将接收到的信号改写为由 0 和 1 构成的串, 并坚信外星人的信息就隐藏在其中.他认为,外星人发来的信息一定会在他接受到的 01 串中重复出现,所以他希望找到他接受到的 01 串中所有重复出现次数大于 1 的子串.但是他收到的信号串实在是太长了,于…
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in", "r", stdin) #define maxn 3000000 using namespace std; char str[maxn]; namespace SA { int n, m; int rk[maxn], sa[maxn], tp[maxn], tax[maxn], height[maxn]; void qsort(…