/*
 求可重叠的至少重复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 产奶的模式(后缀数组+二分)的更多相关文章

  1. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式——后缀数组

    Brief Description 给定一个字符串,求至少出现k次的最长重复子串. Algorithm Design 先二分答案,然后将后缀分成若干组.判断有没有一个组的后缀个数不小于k.如果有,那么 ...

  2. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 [后缀数组]

    1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1017  Solved: ...

  3. 【BZOJ1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组

    [BZOJ1717][Usaco2006 Dec]Milk Patterns Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量 ...

  4. 【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组+离散化

    题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一 ...

  5. bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式

    后缀数组+二分答案+离散化.(上次写的时候看数据小没离散化然后一直WA...写了lsj师兄的写法. #include<cstdio> #include<cstring> #in ...

  6. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式_后缀数组_二分答案

    Milk Patterns 产奶的模式 bzoj-1717 Usaco-2006 Dec 题目大意:给定一个字符串,求最长的至少出现了$k$次的子串长度. 注释:$1\le n\le 2\cdot 1 ...

  7. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)

    以后似乎终于不用去学后缀数组的倍增搞法||DC3等blablaSXBK的方法了= = 定义(来自关于后缀数组的那篇国家集训队论文..) 后缀数组:后缀数组SA是一个一维数组,它保存1..n的某个排列S ...

  8. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )

    二分答案m, 后缀数组求出height数组后分组来判断. ------------------------------------------------------------ #include&l ...

  9. BZOJ#1717:[Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组+单调队列)

    1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的 ...

随机推荐

  1. PHP数组函数: array_walk()与 array_map() 的区别

    详细的介绍如下: PHP数组函数: array_walk() PHP数组函数: array_map() 实际应用中的一点区别与总结: array_walk() 主要用于对某个数组的迭代,相当于 for ...

  2. JDK source 之 LinkedHashMap原理浅谈

    注:本文参考JDK1.7.0_45源码. LinkedHashMap是基于HashMap实现的数据结构,与HashMap主要的不同为每个Entry是使用双向链表实现的,并且提供了根据访问顺序进行排序的 ...

  3. 通过goto语句学习if...else、switch语句并简单优化

    goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...

  4. oracle查询某一个字段的数量总和

    select count(*) from (select count(*) from 表名称 group by 多种数据量 ) 表名; 举个栗子: 比如说我有一个数据类型的字段, 里面有很多种的数据类 ...

  5. 第一个JSP

    还是大一暑假学的Java,知识掌握了第一阶段的Java基础知识, 后面想自己进阶第二阶段,学习JavaWeb,一直拖到现在直接从Java第二阶段写了~~~ 希望指正: 这次主要还是第一个Hello W ...

  6. 怎么在myeclipse中导入已经写好的项目

    经常我们需要学习别人写好了的源码来提升自己的编码能力,本文将介绍如何从外部导入别人已经写好的项目到我们myeclipse里面.同时也将介绍怎么给导入的工程改名的问题.                 ...

  7. AngularJS--自定义指令和模板

    一.自定义指令: 1. 先创建模块    var app=angular.module("myApp",[]); 2. 创建自定义指令 (directive后面的参数一:自定义指令 ...

  8. android 第三方登录---新浪微博

    1.AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个 <!--微博--> <!-- 必须注册在微博授权,分享微博时候用到 --> ...

  9. Lattice FPGA 板子 调试笔记

    最近在调试LATTICE  FPGA 做的视频板子,颇不顺利,所以记录下来作为以后的参考: 1.FPGA的IO口不是所有的都是双向的,有些有特殊作用的是单向的. 在查阅 LatticeECP3-17E ...

  10. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...