随笔分类 - 数据结构
摘要:#include #include using namespace std;#define mod 20071027int dic[401000][28],val[401000];char str[301000];int dp[301000];int s,sz;char T[110];void in...
阅读全文
摘要:给出一个字符串,对于每次的k,求所有子串(去除重复后的)中排名为k的L和R,其中如果有多组解,输出L最小的。后缀数组处理过后,sum[i]表示 sa[1] 到 sa[i] 一共有多少个非重复字串,在sum数组中二分求出k的lower_bound=pos,那么第一次出现这个子串的后缀就是sa[pos]...
阅读全文
摘要:#include #include #include using namespace std;int a[100100],q[100100],l[100100],r[100100];int main(){ int i,n,cnt; while(scanf("%d",&n),n!=0) ...
阅读全文
摘要:#include #include #include using namespace std;#define maxn 100100int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int r[maxn],sa[maxn];char str[maxn];int cmp(...
阅读全文
摘要:#include #include #include #define maxn 1220double x[maxn],y[maxn],d;bool vis[maxn];int p[maxn];int n;double dist(int i,int j){ return fabs( (x[i]-...
阅读全文
摘要:将两个字符串连接,中间加一个没出现的字符,最后添加0。然后从小到大枚举长度ans,对于每个ans,对height数组分组,答案只可能出现在某组内,对每组进行检查,如果只存在两个字符串一个在前一个在后则return true,贴的代码是别人的。#include #include #include us...
阅读全文
摘要:#include #include #include #define MAXNODE 50000#define SIGMA_SIZE 100using namespace std;int ch[MAXNODE][SIGMA_SIZE];int f[MAXNODE]; // fail函数int ...
阅读全文
摘要:#include #include #include using namespace std;#define MAXNODE 100100#define SIGMA_SIZE 135int ch[MAXNODE][SIGMA_SIZE];int f[MAXNODE]; // fail函数int...
阅读全文
摘要:先复制一遍数组,在用一个数组sum[ i ]表示前 i 个数字的和,对于以第k个数开头的情况,只需找出sum[ k ]到sum[ k+n ]的最小值min,如果min - sum[ k-1 ]大于0则满足。#include #define maxn 2001000int a[maxn],sum[ma...
阅读全文
摘要:#include #include #define maxn 1001000int id[maxn],p[maxn];bool vis[maxn];int find(int x){ if(p[x]==x) return x; else return p[x]=find(p[x]);}vo...
阅读全文
摘要:#include #include #define maxn 28#define inf 500000int sz;int ch[inf][maxn],val[inf],sum[inf];int idx(char c) { return c-'a';}void init() { sz =...
阅读全文
摘要:int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int cmp(int *r,int a,int b,int l){return r[a]==r[b]&&r[a+l]==r[b+l];} //就像论文所说,由于末尾填了0,所以如果r[a]==r[b](实际是y[a]...
阅读全文
摘要:AC自动机的裸题,不过需要注意几个地方,keywords中有重复的,而且模板中会重复出现keywords~#include #include #define SIGMA_SIZE 26#define MAXNODE 500100using namespace std;int ch[MAXNODE][...
阅读全文
摘要:#include #include #define maxn 10050int n,m;int p[maxn],x[maxn*10],y[maxn*10];int find(int x){ if(p[x]==x) return x; else return p[x]=find(p[x]);}int ...
阅读全文
摘要:题目大意:初始时,有n个龙珠,编号从1到n,分别对应的放在编号从1到n的城市中。现在有两种操作:T A B,表示把A球所在城市全部的龙珠全部转移到B城市。(第一次时,因为A球所在的城市只有一个球,所以只移动1个,如果有多个,则全部移动)。Q A,表示查询A。要求得到的信息分别是:A现在所在的城市,A...
阅读全文
摘要:题目大意:给出一些虫子之间的关系,看是否有同性恋。对于任意两个虫子,若有关系则在这两个节点之间连边,如果有同性恋,则肯定会有奇数步的回路,若没有,则不存在同性恋。(二分图的判定)#include #include using namespace std;#define maxn 2010int co...
阅读全文
摘要:出自http://www.cppblog.com/MatoNo1/archive/2011/04/17/144390.aspx扩展KMP:给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](0k,所以又有A[i..p]==B[i-k..p-k],设L=next[i...
阅读全文
摘要:题目大意:对于一个字符串,找由循环字符串组成的位置,并输出最多循环了几次,比如两个样例,第一个是 aaa ,所以在第二个位置由子串a循环两次得到,第三个位置由a循环3次,第二个样例aabaabaabaab,在第二个位置由a循环两次,在第六个位置由aab循环两次,在第9个位置由aab循环3次,在第12...
阅读全文

浙公网安备 33010602011771号