BZOJ1717 产奶的模式

Librepilot _64位window10环境下的搭建及一些坑的解决办法   刚入IT行业的小菜鸟,在window上折腾了四天的librepilot地面控制站的搭建,想着这么辛苦不能白费了,看网上相关资料少得可怜,唯一一个详细教程还是在32位环境下,一大堆坑,所以把自己的经验写下来,供大家一起参考。 参考的原文是:https://www.cnblogs.com/jasonchan1202/p/7809937.html的博客,但是执行下来才发现这个博客对64位系统极其不... 阅读详情

题目大意:求至少出现k次的可重复子串的最大长度。

解析:后缀数组求height值,二分出长度判断:如果连续k-1个height值都大于等于mid,就满足,否则不满足。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX=1000010;
char s[MAX],t[MAX];
int x[MAX],y[MAX],c[MAX*10],sa[MAX];
int n,m=200,k,cnt=0,ans;
int cmp(int *r, int a, int b, int l) {return r[a]==r[b]&&r[a+l]==r[b+l];}
void build_sa()
{
	for (int i=0;i<m;i++) c[i]=0;
	for (int i=0;i<n;i++) c[x[i]=s[i]]++;
	for (int i=1;i<m;i++) c[i]+=c[i-1];
	for (int i=n-1;i>=0;i--) sa[--c[x[i]]]=i;
	for (int k=1;k<=n;k<<=1)
	{
		int p=0;
		for (int i=n-k;i<n;i++)	y[p++]=i;
		for (int i=0;i<n;i++)	
			if (sa[i]>=k) 
				y[p++]=sa[i]-k;
		for (int i=0;i<m;i++) c[i]=0;
		for (int i=0;i<n;i++) c[x[i]]++;
		for (int i=1;i<m;i++) c[i]+=c[i-1];
		for (int i=n-1;i>=0;i--) sa[--c[x[y[i]]]]=y[i];
		swap(x,y); p=1; x[sa[0]]=0;
		for (int i=1;i<n;i++)
			x[sa[i]]=cmp(y,sa[i-1],sa[i],k)?p-1:p++;
		if(p>n) break;
		m=p;	
	}
}
int rank[MAX],height[MAX];
void build_height()
{
    for (int i=0;i<n;++i) rank[sa[i]]=i;
    int k=0;height[0]=0;
    for (int i=0;i<n;++i)
    {
        if (!rank[i]) continue;
        if (k) --k;
        int j=sa[rank[i]-1];
        while (i+k<n&&j+k<n&&s[i+k]==s[j+k]) ++k;
        height[rank[i]]=k;
    }
}
bool check(int mid)
{
	int num=0,minn=0;
	for(int i=0;i<n;i++)
	{
		if(height[i]<mid)
		{
			num=0;
			continue;
		}
		else if(height[i]>=mid)
			num++;
		if(num==cnt-1)
			return true;
	}
	return false;
}
int main()
{
	scanf("%d%d",&n,&cnt);
	for (int i=1;i<=n;i++)
	{
		int x;
		scanf("%d",&x);
		s[i-1]=x+48;
	}
	build_sa();
	build_height();
	int l=1,r=n;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(check(mid))
		{
			l=mid+1;
			ans=mid;
		}	
		else
			r=mid-1;
	}
	printf("%d",ans);
}

PCL 欧式聚类分割【2026最新版】 PCL中欧式聚类提取算法原理详解、代码实现以及一个大自然场景地物分割提取并保存分割结果到本地文件夹的应用案例。 阅读详情

相关推荐

洛奇 服务器文件,MabinogiG20S2 [洛奇G20服务端]

Code:Titles:>set_title /id: /add /remove Parameters for titles>set_title /id:60001 /add add devcat title>set_title /id:60001 /remove remove devcat title===========================...

weixin_30813385的博客 4305

POJ 2112 Optimal Milking 最优挤奶方案 Floyd算法+二分查找+最大流

题目链接:POJ 2112 Optimal Milking Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 12446   Accepted: 4494 Case Time Limit: 1000MS D

一蓑烟雨 8036

GNSS气象学入门:从ZTD到PWV的水汽反演全流程解析(含精度评估)

本文详细解析了GNSS气象学中从ZTD到PWV的水汽反演全流程,包括基础概念、反演原理、数据处理步骤及精度评估方法。通过PRIDE软件和MATLAB代码示例,展示了如何高效提取ZTD数据并结合ERA5气象数据进行PWV计算,为气象研究和业务应用提供了实用指南。

weixin_28707365的博客 573

ObjectMapper中writeValue()和writeValueAsString的区别 File Writer Outputstream

ObjectMapper可以用来实现Java对象跟json的转换 writeValue(参数,obj) 参数1: File: 将对象转为json字符串,保存到指定的文件中 Writer: 将对象转为json字符串,并将json数据填充到字符输出流中 OutputStream: 将对象转为json字符串,并将json数据填充到字节输出流中 writeValueAsString(obj) 将对象...

技术高手 1万+

微信小程序OCR身份证识别实战:从拍照到信息提取全流程解析

本文详细解析了微信小程序中OCR身份证识别的全流程实现,从环境配置、拍照上传到OCR核心识别及安全优化。通过微信开发者工具和OCR插件,开发者可快速构建高效的身份信息采集系统,提升用户体验和数据安全性。重点介绍了图像处理、加密传输及混合云架构等企业级解决方案。

j0k1l2m3n的博客 458

7系列ZYNQ硬件调试:Vitis无法识别ARM DAP的排查与解决

本文针对7系列ZYNQ开发中Vitis无法识别ARM DAP的典型硬件调试问题,提供了系统性的排查与解决方案。文章深入剖析了问题本质,指出ARM DAP无法访问的核心原因在于PS部分的电源、时钟或复位等硬件基础条件未满足,并重点强调了PS参考时钟(如33.333MHz晶振)的完整性是关键排查点。通过从电源完整性、时钟与复位信号到JTAG连接与焊接的逐步硬件排查,并结合软件配置交叉验证,为开发者提供了清晰的故障定位思路与实战指南。

weixin_29280657的博客 626

1.4 milk3 倒牛奶

<br />广度优先搜索,用数组记录到达过的状态<br /> <br />Mother's Milk<br /><br /> Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numbers A, B, and C is an integer from 1 through 20, inclusive. Initially, buckets A and B are empty while buc

wawjbin的专栏 4431

属性基加密(Attribute-based Encryption, ABE)

KP-ABE中,用户的密钥定义了访问策略,密文的属性与策略进行匹配。CP-ABE中,密文定义了访问策略,用户的属性与策略进行匹配。

2201_75392924的博客 1830

Python时间序列案例分析实战--奶牛产奶量预测

本文主要介绍时间序列ARIMA相关模型的建立及诊断和预测过程。文章首先使用pandas读入数据、整理数据;然后使用test_stationarity函数进行原始数据以及一阶差分数据的平稳性检验,用于满足后边ARIMA模型对于平稳性的要求;之后对数据进行差分,使数据满足平稳性;之后使用网格搜索的方法对最优参数进行初步确定,之后使用statsmodels库中相关的时间序列函数进行时间序列模型AR、MA、ARIMA的识别,

kicilove的小屋 1万+

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

【WRF-GHG 教程上】完整教程(2024年更新版)

完整教程(2024年更新版)

WW、forever的博客 1435

bzoj1717.产奶的模式

给出一个长度为 n 的数字序列和一个 K,求最长的出现了至少 K 次的子序列的长度。 经典问题,求出 Height 数组, 二分答案然后判断是否有一组的后缀个数大于等于 K。 #include #include using namespace std; const int MAX_N = 20005; int n, K, a[MAX_N], sa[MAX_N], r[MAX_N],

ALXPCUN的博客 638

STM32 USB键盘实现指南

在STM32上实现键盘功能可以通过USB HID(人机接口设备)协议来实现,使STM32设备能被计算机识别为标准键盘。通过上述步骤,您可以在STM32上实现一个功能完整的USB键盘。关键点包括:正确配置USB HID设备实现键盘矩阵扫描处理按键事件并生成HID报告优化按键响应和消抖处理添加额外功能如宏键和LED反馈这个实现可以作为基础,进一步扩展为游戏键盘、宏键盘或特殊输入设备。

suny8的专栏 969

bzoj 1717 [Usaco2006 Dec]Milk Patterns 产奶的模式

后缀数组+二分答案

我要吃熊猫 463

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

后缀数组

Unlimited Code Works 335

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

BZOJ 1717 Usaco 2006 Dec 产奶模式

1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit:5 SecMemory Limit:64 MBSubmit:1557Solved:847[Submit][Status][Discuss] Description 农夫John发现他的奶牛产奶的质量一直在变动。经过细致的调查,他发现:虽然他不能预见明天产奶...

161

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

[bzoj1717][Milk Patterns 产奶的模式]

题目链接 思路 先求出后缀数组,并且求出LCP。二分一下长度len。check的时候就是看有没有连续的k个后缀的LCP大于len。也就是判断是不是有连续的k-1个height大于len。 代码 #include<cstdio> #include<iostream> using namespace std; typedef long long ll; const i...

diecimu4798的博客 153

【SuffixArray】bzoj1717 [Usaco2006 Dec] Milk Patterns 产奶的模式

传送门:BZOJ1717解题思路先把正解说一说:单调队列或者二分 然后么。。为什么我写的这么长?! 是罗穗骞的论文题嘛……就当给后缀数组练手吧 可重叠k次重复字串YM代码#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for(int i = (a); i <= (b); i++) #define red(i,

Johann的博客 873

【bzoj1717】【产奶的模式】【后缀数组+单调栈】

Description 农夫John发现他的奶牛产奶的质量一直在变动。经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠。我们称之为一个“模式”。 John的牛奶按质量可以被赋予一个0到1000000之间的数。并且John记录了N(1<=N<=20000)天的牛奶质量值。他想知道最长的出现了至少K(2<=K<=N)次的模式的长度。比如1 2 3 2 3

sunshinezff的专栏 593

bzoj1717[Usaco2006 Dec]Milk Patterns 产奶的模式 (二分+hash)题解①

1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 993  Solved: 549 [Submit][Status][Discuss] Description 农夫John发现他的奶牛产奶的质量一直在变动。经过细致的调查,他发现:虽然他不能预见明天产奶的质量,

lethalboy 1040

【BZOJ1717】产奶的模式 后缀数组

无脑后缀数组大法好QAQ 还是在height数组上做文章,等价于找序列中【连续K-1个height值中的最小值】的最大值,滑动窗口维护更新即可。 第一次发现pair如此好♂用 /************************************************************** Problem: 1717 User: cqyzhb Lang

鲜衣怒马少年郎 469

bzoj 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式

题目链接 bzoj 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 题解 后缀排序 求出height之后一段区间[l,r]内,出现r-l+1次最长的串是\(min(height[i]) l<=i<=r\) 单调队列维护 代码 // luogu-judger-enable-o2 #include<cstdio> #include&l...

agtvo48266的专栏 243

[BZOJ 1717]Milk Patterns 产奶的模式

后缀数组

_Horizon 717

BZOJ1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组

1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1064  Solved: 580 [Submit][Status][Discuss] 题解: 后缀数组求出来Height数组,然后求出相邻的K个串的LCP即可,不需要让串的长度大于K,因为等于K一定比大于

Oakley 891

bzoj1717[Usaco2006 Dec]Milk Patterns 产奶的模式*

bzoj1717[Usaco2006 Dec]Milk Patterns 产奶的模式 题意: John记录了n天的牛奶质量值。他想知道最长的出现了至少k次的模式(即一个连续子串)的长度。n≤20000。 题解: 求一个总哈希值,二分模式长度,枚举每个模式开始端点,获得它的哈希值,然后排序比较有没有至少k个相等。 代码: 1 #include <cstdio> 2 ...

weixin_34288121的博客 92

bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式[后缀数组]题解②

1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1011  Solved: 558 [Submit][Status][Discuss] Description 农夫John发现他的奶牛产奶的质量一直在变动。经过细致的调查,他发现:虽然他不能预见明天产奶的质量

lethalboy 409
上一篇: BZOJ1031字符加密
下一篇: BZOJ1458 士兵占领
Slr2002
博客等级 码龄9年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值