bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+二分)
/*
求可重叠的至少重复K次的最长字串
以1为下标起点,因为a[i]最大到1000000,所以要先离散一下
二分长度len
然后O(n)检验
后看h[i]是否有连续的一段h[i]大于len的,并且h[i]连续的长度大于K则满足
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
;
int c[maxn],sa[maxn],t1[maxn],t2[maxn],n,m,K,tot,t[maxn],num[maxn],a[maxn],rank[maxn],height[maxn];
bool cmp(int *r, int a, int b, int l){
return r[a]==r[b] && r[a+l]==r[b+l];
}
void suffix(int *a, int n, int m){
, *x=t1, *y=t2;
; i<=m; i++) c[i]=;
; i<=n; i++) c[x[i]=a[i]]++;
; i<=m; i++) c[i]+=c[i-];
; i--) sa[c[x[i]]--]=i;
; j<=n; j<<=){
p=;
; i<=n; i++) y[++p]=i;
; i<=n; i++) if (sa[i]>j) y[++p]=sa[i]-j;
; i<=m; i++) c[i]=;
; i<=n; i++) c[x[y[i]]]++;
; i<=m; i++) c[i]+=c[i-];
; i--) sa[c[x[y[i]]]--]=y[i];
swap(x,y); x[sa[]]=; p=;
; i<=n; i++)
x[sa[i]]=cmp(y,sa[i-],sa[i],j)?p:++p;
m=p; if (p>=n) break;
}
//for (int i=1; i<=n; i++) printf("%d\n", sa[i]);
}
void get_height(int *a){
,j;
; i<=n; i++) rank[sa[i]]=i;
; i<=n; i++){
j=sa[rank[i]-];
k?k--:;
while (a[j+k]==a[i+k]) k++;
height[rank[i]]=k;
}
//for (int i=1; i<=n; i++) printf("%d\n", height[i]);
}
int find(int x){
, r=tot, ans;
while (l<=r){
;
;
;
}
return ans;
}
bool check(int k){
;
; i<=n; i++){
if (height[i]>=k) tot++;
else{
>=K) ;
;
}
}
>=K) ; ;
}
int main(){
scanf("%d%d", &n, &K);
; i<=n; i++) scanf("%d", &a[i]),num[i]=a[i];
sort(num+,num++n); tot=;
t[++tot]=num[];
; i<=n; i++)
])
t[++tot]=num[i];
; i<=n; i++) a[i]=find(a[i]);
suffix(a,n,n);
get_height(a);
,r=n,ans;
while (l<=r){
;
;
;
}
printf("%d\n", ans);
;
}
bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+二分)的更多相关文章
- [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式——后缀数组
Brief Description 给定一个字符串,求至少出现k次的最长重复子串. Algorithm Design 先二分答案,然后将后缀分成若干组.判断有没有一个组的后缀个数不小于k.如果有,那么 ...
- BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 [后缀数组]
1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1017 Solved: ...
- 【BZOJ1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组
[BZOJ1717][Usaco2006 Dec]Milk Patterns Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量 ...
- 【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组+离散化
题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一 ...
- bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
后缀数组+二分答案+离散化.(上次写的时候看数据小没离散化然后一直WA...写了lsj师兄的写法. #include<cstdio> #include<cstring> #in ...
- [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式_后缀数组_二分答案
Milk Patterns 产奶的模式 bzoj-1717 Usaco-2006 Dec 题目大意:给定一个字符串,求最长的至少出现了$k$次的子串长度. 注释:$1\le n\le 2\cdot 1 ...
- [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)
以后似乎终于不用去学后缀数组的倍增搞法||DC3等blablaSXBK的方法了= = 定义(来自关于后缀数组的那篇国家集训队论文..) 后缀数组:后缀数组SA是一个一维数组,它保存1..n的某个排列S ...
- BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
二分答案m, 后缀数组求出height数组后分组来判断. ------------------------------------------------------------ #include&l ...
- BZOJ#1717:[Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+单调队列)
1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的 ...
随机推荐
- [Data Structure] 数据结构中各种树
数据结构中有很多树的结构,其中包括二叉树.二叉搜索树.2-3树.红黑树等等.本文中对数据结构中常见的几种树的概念和用途进行了汇总,不求严格精准,但求简单易懂. 1. 二叉树 二叉树是数据结构中一种重要 ...
- width的数值为百分比
对于width的数值为百分比的时候,表示该元素的长度是相对于父容器来算的. 对于padding-right和padding-left比较好理解也是相对于父容器来算的,但容易出错的是padding-to ...
- 分享一个Visual Studio的背景插件,让堆码更富情趣
忘记一件重要的事情,我使用的是VS 2012版,其他更高版本应该是可以找到的,以下版本就不清楚了.有可能找不到,见谅,也不是我开发的,只是偶尔碰到,拿出来让大家知道. 上周某日,新生命群里面还是一如既 ...
- Linux 下测试串口的命令microcom
昨天应为要测试主板上的串口,查了一下,可以使用microcom 这条命令进行测试. 命令使用方法很简单: Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPE ...
- 加速android源码编译
添加缓存环境变量 : 在 ~/.bashrc 环境变量文件中 添加 export USE_CCACHE=1环境变量, 加速随后的编译过程; 分配缓存磁盘大小 为 ccache 指定磁盘中的一部分大小, ...
- objccn-相机工作原理
感觉这个世界上最幸福的事情就是工作和兴趣结合到一起了.这一阵子总是在听再看有关摄影的种种,今天在objccn上又看到这个,哈哈~ 轻轻一按,相机就把光子转化成了比特,于是一张照片就保存到了手机里. 一 ...
- day3
程序1: 实现简单的shell sed替换功能 ]new = sys.argv[]file_name = sys.argv[]tmp_file ="tmpfile"open(tmp ...
- Ubuntu 16.04 64位 搭建 node.js NodeJS 环境
我的系统环境: Ubuntu 16.04 64位 本文内容亲测可用, 请放心食用 使用淘宝镜像 淘宝镜像官网是https://npm.taobao.org/ 使用淘宝镜像前请自行安装好 npm 和 n ...
- angular $http 与form表单的select
产品线 产品 版本 代码是联动关系 ng-model 绑定数据 设置默认值 ng-options 填充option ng-change 选项变化时的操作截图如下: html <!DOCTYPE ...
- jquery返回滚动条顶部
var $view = $('html,body'),$backTop = $('#backTop'), $backTop.on('click',function(){ $view.animate({ ...