BZOJ1717 产奶的模式

LCZ数据下载及处理-以重庆市为例(完整Python代码) 阅读详情

题目大意:求至少出现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);
}

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 双机位C卷 200分) 这个问题要求模拟打印机的文件调度过程,关键在于正确处理每个打印机队列中的文件优先级和文件进入队列的顺序。优先级处理:每个文件有一个 1 到 10 的优先级,数字越大优先级越高,打印机应首先处理优先级最高的文件。在打印机 1 的队列中插入了 3 个文件,分别有不同的优先级,其中编号 3 的文件优先级最高,先被取出。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10 不同的 优先级,其中数字越大优先级越高。在打印机 2 的队列中插入了 1 个文件,优先级为 1,因此它被首先取出。 阅读详情

相关推荐

六自由度机械臂运动学分析及其轨迹规划

六自由度机械臂轨迹规划 通过对比三次多项式插值法与五次多项式插值法的效果,选取后者对机械臂进行轨迹规划,将运动学解导入Matlab Robotics Toolbox仿真,得到各关节角度、速度和加速度与时间关系曲线。 三次多项式插值法 三次多项式有4个待定系数,可同时对起始点和目标点的角度和角速度给出约束条件。 数学公式 MATLAB代码 五次多项式插值法 五次多项式有6个待定系数,可同时对起始点和...

两条眉毛 6万+

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

逆变器技术解析:DDSRF双解耦在正负序分离中的关键作用

本文深入解析了DDSRF双解耦技术在逆变器正负序分离中的关键作用。通过建立正反旋转坐标系并利用交叉反馈解耦网络,DDSRF能快速、精准地分离电网电压中的正负序分量,从而显著提升锁相环在电网不平衡条件下的精度与系统稳定性,是现代高性能并网逆变器的核心算法之一。

m3n5b7v8c9x的博客 410

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

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

技术高手 1万+

STM32串口DMA双缓冲机制实战:提升数据传输效率的终极方案

本文深入解析了STM32串口DMA双缓冲机制的核心原理与实战配置。通过对比传统中断方式,阐述了双缓冲如何实现数据接收与处理的“无缝接力”,从而在工业传感器数据采集等高负载场景下,将CPU占用率降至极低水平并彻底避免数据丢失。文章提供了基于标准外设库的详细配置步骤、中断处理逻辑及性能实测数据,是提升嵌入式系统串口通信效率和可靠性的终极方案。

weixin_29192365的博客 80

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar

新建虚拟屏幕参考文献。

专注机器学习之路 7487

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

RK3588 平台imx334 驱动调试记录

rk3588调试imx334

xiaoning132的专栏 1790

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

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

kicilove的小屋 1万+

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景

安卓兼职framework和app工程师的博客 2670

MOSFET关断尖峰电压的机理与抑制

MOSFET在电力电子系统中存在开关尖峰电压/电流问题,主要源于寄生电感、密勒电容及开关瞬态特性。尖峰会引发过压击穿、功率损耗和EMI干扰。抑制措施包括优化驱动电路、添加缓冲网络(RC/RCD)、降低寄生电感(改进PCB布线/封装)、使用快速二极管及远端负载特殊处理(电抗器/滤波器)。系统性的器件选型与电路设计是确保功率电子稳定运行的关键。

硬核科技 1824

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

QT+OSG/osgEarth编译之七十六:gltf+Qt编译(一套代码、一套框架,跨平台编译,版本:osgEarth-3.3插件库osgdb_gltf)

通过一套gltf代码和框架,实现osgdb_gltf跨平台编译。 在Qt环境下,集成头文件、库文件,构建跨平台编译的pro文件。 通过构建的一套配置工程,基于Qt Creator IDE,完成跨平台的编译实践。 在Windows、Linux、MacOS等操作系统上进行测试,成功编译,形成的成果(头文件、库文件等)可在不同系统下调用或使用,从而更好地构建跨平台解决方案。 采用的是osgEarth3.3版本。 读者可参考博客中的集成原理,构建不同版本的osgdb_gltf跨平台包。

LuckyHanMo的博客 1801

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

后缀数组+二分答案

我要吃熊猫 463

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

后缀数组

Unlimited Code Works 335

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[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、付费专栏及课程。

余额充值