题解:

同bzoj1717

代码:

#include<bits/stdc++.h>
using namespace std;
const int P1=,P2=,P=;
int a1[P],num[P],a2[P],flag[P],a[P],inv1[P],inv2[P],n,m;
int find(int x,int y)
{
int k=(long long)x*y%P;
for (;flag[k]&&(a1[k]!=x||a2[k]!=y);k=(k+)%P);
return k;
}
int pd(int x)
{
memset(a1,,sizeof a1);
memset(a2,,sizeof a2);
memset(flag,,sizeof flag);
memset(num,,sizeof num);
inv1[]=inv2[]=;
for (int i=;i<=n;i++)inv1[i]=inv1[i-]*%P1,inv2[i]=inv2[i-]*%P2;
int p1=,p2=;
for (int i=;i<=n;i++)
{
p1=(p1*+a[i])%P1;
p2=(p2*+a[i])%P2;
if (i>x)
{
p1=(p1-(long long)a[i-x]*inv1[x]%P1+P1)%P1;
p2=(p2-(long long)a[i-x]*inv2[x]%P2+P2)%P2;
}
if (i<x)continue;
int l=find(p1,p2);
a1[l]=p1;a2[l]=p2;flag[l]=;
num[l]++;
if (num[l]>=m)return ;
}
return ;
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)scanf("%d",&a[i]);
int l=,r=n;
while (l<r)
{
int mid=(l+r+)/;
if (pd(mid))l=mid;
else r=mid-;
}
printf("%d\n",l);
}

poj3261的更多相关文章

  1. 【poj3261】 Milk Patterns

    http://poj.org/problem?id=3261 (题目链接) 题意 给出n个数和k,求在给出的数中,最长的出现至少k次的可重叠子串. solution 后缀数组论文题,感觉分组思想可能会 ...

  2. POJ3261 Milk Patterns —— 后缀数组 出现k次且可重叠的最长子串

    题目链接:https://vjudge.net/problem/POJ-3261 Milk Patterns Time Limit: 5000MS   Memory Limit: 65536K Tot ...

  3. 哈希算法解决:HDU1686 && POJ2774 && POJ3261

    HDU1686 题意: 找A串在B串中的出现次数(可重叠),可用KMP做,这里只提供哈希算法做的方法 题解: 先得到A串的hash值,然后在B中枚举起点,长度为lena的子串,检验hash值是否相同就 ...

  4. POJ-3261 Milk Patterns(后缀数组)

    题目大意:找出至少出现K次的子串的最长长度. 题目分析:二分枚举长度x,判断有没有最长公共前缀不小于x的并且连续出现了至少k次的有序子串区间. 代码如下: # include<iostream& ...

  5. poj3261 Milk Patterns(后缀数组)

    [题目链接] http://poj.org/problem?id=3261 [题意] 至少出现k次的可重叠最长子串. [思路] 二分长度+划分height,然后判断是否存在一组的数目不小于k即可. 需 ...

  6. poj3261 -- Milk Patterns

                                                                        Milk Patterns Time Limit: 5000MS ...

  7. 后缀数组--可重叠的K次最长重复子串(POJ3261)

    题目:Milk Patterns #include <stdio.h> #include <string.h> #define N 1000010 int wa[N],wb[N ...

  8. poj3261 Milk Patterns 后缀数组求可重叠的k次最长重复子串

    题目链接:http://poj.org/problem?id=3261 思路: 后缀数组的很好的一道入门题目 先利用模板求出sa数组和height数组 然后二分答案(即对于可能出现的重复长度进行二分) ...

  9. Milk Patterns poj3261(后缀数组)

    Milk Patterns Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9274   Accepted: 4173 Cas ...

  10. POJ3261:Milk Patterns

    题面 vjudge Sol 二分答案+分组,判断有没有一个组的后缀个数不小于 k 做法 # include <bits/stdc++.h> # define IL inline # def ...

随机推荐

  1. idataway盐城

    地点的经纬度.

  2. Asp.net core 学习笔记 ( Router 路由 )

    和之前的一样用法. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory log ...

  3. Java 访问RabbitMQ

    一.概述 前面学过ActiveMQ.ActiveMQ主要是实现的JMS规范,而RabbitMQ就是AMQP的一个具体实现. RabbitMQ里面有几个概念:生产者.消费者.消息.交换器.路由键.队列. ...

  4. linux下python操作的一些命令

    1.查看python当前版本以及安装路径 [root@localhost bin]# python -V Python [root@localhost HMK]# whereis python pyt ...

  5. window如何安装redis服务、卸载redis服务和启动redis服务

    window如何安装redis服务.卸载redis服务和启动redis服务 一.总结 一句话总结:github上下载,解压,命令行运行(redis-server.exe redis.windows.c ...

  6. MySql常用函数 --MySql

    1.目标 MySQL数据库中提供了很丰富的函数.MySQL函数包括数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数.加密函数.格式化函数等.通过这些函数,可以简化用户的操作.例如,字符 ...

  7. LeetCode--303--区域和检索 - 数组不可变

    问题描述: 给定一个整数数组  nums,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1 ...

  8. android ------- 运行官方NDK 案例HelloJNI

    下载案例 HelloJNI ,导入工程到Eclipse,  可以直接下载我的案例, 源码下载:https://github.com/DickyQie/android-ndk 目录图 使用命令生成  . ...

  9. arm ncnn

    ncnn网址:https://github.com/Tencent/ncnn 1. sudo apt-get update sudo apt-get upgrade 2. 命令:sudo apt-ge ...

  10. CentOS7 下源代码安装mysql5.6

    ###### mysql ######### 引言:这里选用mysql5.6版本,5.7版本编译时间需要几个小时. 编译安装环境: yum -y install make gcc-c++ cmake ...