【poj3261】 Milk Patterns】的更多相关文章

http://poj.org/problem?id=3261 (题目链接) 题意 给出n个数和k,求在给出的数中,最长的出现至少k次的可重叠子串. solution 后缀数组论文题,感觉分组思想可能会有大用. 果断后缀数组,求出${sa,height,rank}$.二分答案,每次判断长度${mid}$是否符合出现${k}$次的要求.那么现在的问题是如何判断是否有一个长度为${mid}$的子串在原串中出现了至少${k}$次. 我们采用分组思想.将后缀${sa}$按照${height}$是否大于等于…
1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 881  Solved: 480[Submit][Status][Discuss] Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一个0到1000000之间的数…
题意:求字符串的可重叠的k次最长重复子串 n<=20000 a[i]<=1000000 思路:后缀数组+二分答案x,根据height分组,每组之间的height>=x 因为可以重叠,所以只要判断是否有一组的height个数>=k即可 ..]of longint; n,m,i,l,r,mid,last,k1:longint; procedure swap(var x,y:longint); var t:longint; begin t:=x; x:=y; y:=t; end; fun…
后缀数组 o(︶︿︶)o 唉傻逼了一下,忘了把后缀数组的字典范围改回20001,直接21交了上去,白白RE了两发……sigh 既然要找出现了K次的子串嘛,那当然要用后缀数组了>_>(因为我太弱不会自动机&树) ok离散化后上后缀数组,求出height数组>_>然后用个……ST表= =?! O(n)地扫一遍所有的区间……看所有长度为k的里面最大的min(i,i+k-1)是多少(当然,k要减一,因为是K个子串的话对应的是K-1个串的LCP) 水题还RE了两发→_→真是难过 /*…
[链接]h在这里写链接 [题意] 给你一个长度为n的序列. 问你能不能在其中找到一个最长的子串.     这个子串至少出现了k次. [题解] 长度越长,就越不可能出现k次 后缀数组+二分. N最大为20000; 每个数字在0到1e5之间 防止出错,把那个数字都加上1就好 (因为N比每个数字的大小来的小,所以需要把N也开到1E5以上.) [错的次数] 0 [反思] 在这了写反思 [代码] #include <cstdio> #include <algorithm> using nam…
Milk Patterns 题意 给出n个数字,以及一个k,求至少出现k次的最长子序列的长度 思路 和poj 1743思路差不多,二分长度,把后缀分成若干组,每组任意后缀公共前缀都>=当前二分的长度.统计是否有某个组后缀数量>=k,如果有当前长度就可以. 代码 // #include <bits/stdc++.h> #include <stdio.h> #include <algorithm> #include <string.h> #defin…
可重叠的k次最长重复子串 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 21003; int t1[N], t2[N], c[N]; void st(int *x, int *y, int *sa, int n, int m) { int i; for(i = 0; i < m; ++i) c[i] = 0; for(i = 0;…
[思路分析] 比赛的时候想到了用我确实也想到了树形DP,但是状态没有确定对,连样例都没有过 PS:这是第二道发现还可以用状态作为答案最后输出的题目 正解:树形DP(背包) 按照读进来的数据,我们先建一棵树 像这样(这里用vector存图) for(int i=1;i<=n;++i){ int x=read(),y=read(); a[i]=x; v[y].push_back(i);//从父节点建一条边连向子节点 } 然后就是DP的过程 (本人见到的树形DP题目比较少,但是做到过相关的题目似乎都是…
AC自己主动机的模板题.须要注意的是,对于每一个字符串,须要利用map将它映射到一个结点上,这样才干按顺序输出结果. 14360841 1449 option=com_onlinejudge&Itemid=8&page=show_problem&problem=4195" style="font-size:13.3333330154419px; margin:0px; padding:0px; color:rgb(153,0,0); text-decoratio…
题面 vjudge Sol 二分答案+分组,判断有没有一个组的后缀个数不小于 k 做法 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(20010); IL ll Read(){ RG char c = getcha…