单调队列——HDU 3415 Max Sum of Max-K-sub-sequence

自动驾驶轨迹规划算法——Apollo Lattice Planner Apollo Lattice Planner是百度Apollo自动驾驶系统中的一种基于采样的实时轨迹规划算法。其核心思想是在离散化的状态空间中,对终端状态进行采样,并通过多项式曲线连接当前状态与候选终端状态,形成候选轨迹集,最后基于代价函数选择最优轨迹。该算法将车辆可达状态按纵向距离、横向偏移和速度等维度规则离散化,形成"格点"状态空间。 Lattice Planner通过三个主要步骤实现轨迹规划:1)终端状态采样,在规划时域内枚举多种驾驶意图;2)轨迹生成,使用五次多项式连接起点与各终 阅读详情

Max Sum of Max-K-sub-sequence

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5216    Accepted Submission(s): 1890


Problem Description
Given a circle sequence A[1],A[2],A[3]......A[n]. Circle sequence means the left neighbour of A[1] is A[n] , and the right neighbour of A[n] is A[1].
Now your job is to calculate the max sum of a Max-K-sub-sequence. Max-K-sub-sequence means a continuous non-empty sub-sequence which length not exceed K.
 

Input
The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. 
Then T lines follow, each line starts with two integers N , K(1<=N<=100000 , 1<=K<=N), then N integers followed(all the integers are between -1000 and 1000).
 

Output
For each test case, you should output a line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end position of the sub-sequence. If there are more than one result, output the minimum start position, if still more than one , output the minimum length of them.
 

Sample Input
  
4 6 3 6 -1 2 -6 5 -5 6 4 6 -1 2 -6 5 -5 6 3 -1 2 -6 5 -5 6 6 6 -1 -1 -1 -1 -1 -1
 

Sample Output
  
7 1 3 7 1 3 7 6 2 -1 1 1

题目与单调队列—— HDU 4193 Non-negative Partial Sums类似,不在赘述,直接给出代码:

#include <stdio.h>

#define MAX_NUM	100000
#define NEGATIVE_INF -0x7ffffff

int sum[MAX_NUM*2+5];	//存储循环序列的前段和
int n;					//序列长度
int k;					//子序列的最大长度

int mq[MAX_NUM+5];		//单调不增队列,队列元素为a[]的下标
int front;				//队首指针
int rear;				//队尾指针,指向队尾的下一个位置

inline void InitMonotonicQueue(void)
{
	front = rear = 0;
}

inline bool IsEmpty(void)
{
	return front == rear;
}

void Push(int i)
{
	while (!IsEmpty() && sum[mq[rear-1]] < sum[i])
	{
		rear--;
	}
	mq[rear++] = i;
}

inline int Front(void)
{
	return mq[front];
}

inline void Pop(void)
{
	front++;
}

int main(void)
{
	int ncases;
	scanf("%d", &ncases);
	
	while (ncases-- != 0)
	{
		scanf("%d%d", &n, &k);
		int i;
		for (i = 1; i <= n; i++)
		{
			scanf("%d", &sum[i]);
		}

		for (i = n+1; i < n+k; i++)
		{
			sum[i] = sum[i-n];
		}

		for (i = 2; i < n+k; i++)
		{
			sum[i] += sum[i-1];
		}

		InitMonotonicQueue();
		for (i = 1; i <= k; i++)
		{
			Push(i);
		}
		int maxSum = sum[Front()];
		int startPos = 1, endPos = Front();

		for (i = k+1; i < n+k; i++)
		{
			if (!IsEmpty() && Front() + k <= i)
			{
				Pop();
			}
			Push(i);
			int p = Front();
			int s = sum[p] - sum[i-k];
			if (s > maxSum)
			{
				maxSum = s;
				startPos = i - k + 1;
				endPos = p;
			}
		}
		if (endPos > n)
		{
			endPos = endPos % n;
		}
		printf("%d %d %d\n", maxSum, startPos, endPos);
	}
	return 0;
}



AUTOSAR网络管理配置详解:Vector DaVinci工具全面讲解 手把手带你用Vector DaVinci完成AUTOSAR网络管理模块的配置,涵盖NmChannel、NmPdu、重复帧抑制等关键参数设置,深入解析CAN总线上的NM报文调度与唤醒机制,助你扎实掌握AUTOSAR网络管理核心实践。 阅读详情

相关推荐

实战复盘:一次绕过WAF的EDUSRC SQL注入漏洞挖掘

本文详细复盘了一次针对教育行业网站的SQL注入漏洞挖掘实战。通过手动信息收集发现可疑点,并利用‘+’号替换空格等技巧,成功绕过WAF(Web应用防火墙)的拦截。文章逐步演示了从判断注入点到手工获取数据结构、最终解密进入后台的完整过程,并总结了手工测试的优势及高级绕过思路,强调了在EDUSRC等授权范围内进行安全测试的重要性。

weixin_28622215的博客 191

HDU3415 Max Sum of Max-K-sub-sequence 单调队列

HDU3415 Max Sum of Max-K-sub-sequence 单调队列

htrdchh的博客 281

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

m0_68167062的博客 2261

Max Sum of Max-K-sub-sequence HDU - 3415 (单调队列 好题)

题意: 给定n长度的序列, 求其中连续且长度不超过k的子序列的最大和 题解: 很常见的一类题, 和这道题非常类似, 一个是求子序列最大长度, 一个是求子序列最大和, 下面来说一下这道题 首先运用一个预处理的思想, 定义sum[i] = ∑1isi\sum_1^is_i∑1i​si​ 如此一来, maxK[i, j] = sum[j] - min{sum[i] | 1&amp;lt;=i&amp;lt;j}, 也...

Suprit's blog 572

当KCF遇见卡尔曼滤波:视觉跟随算法的动态优化实战

本文探讨了KCF算法与卡尔曼滤波在视觉跟随算法中的动态优化实践,通过深度融合策略提升目标跟踪的鲁棒性和实时性。特别针对机器人应用场景,详细解析了在Jetson等嵌入式平台上的优化技巧,包括计算图优化、内存访问优化和多线程流水线设计,实现了30FPS@1080p的稳定跟踪性能。

sugar的博客 957

031、速度前馈与加速度前馈

摘要: 本文通过追剪机调试案例,阐述了速度前馈和加速度前馈在运动控制中的关键作用。前馈不是高级技巧,而是解决动态响应问题的必要手段:速度前馈通过预测速度变化提前补偿,加速度前馈则针对惯量变化提供力矩补偿。实现时需注意信号平滑处理,避免噪声放大。前馈与PID分工明确,前馈承担主要动态响应,PID处理残余误差。调试应先调前馈再微调PID,前馈增益需计算而非仅凭参数调整,并允许适当残余误差。前馈作为开环补偿不会影响系统稳定性,但需配合平滑的指令生成器使用。(149字)

m0_50546716的博客 281

HDU 3415 Max Sum of Max-K-sub-sequence [单调队列]【杂类】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3415 ————————————-. Max Sum of Max-K-sub-sequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s

Tabris的博客 452

无需Python环境!纯C#上位机+OpenCVSharp4+ONNX Runtime实现YOLOv8摄像头实时流检测,工业级稳定

摘要 工业自动化C#开发中,传统Python方案实现视觉检测功能存在环境依赖、内存泄漏和性能不稳定等问题。本文提出基于.NET 8+OpenCVSharp4+ONNX Runtime的纯C#方案,通过实际案例验证其优势: 零Python依赖,支持离线部署 内存稳定(380MB/72h),检测延迟<80ms 检测精度达漏检率<0.1%,误检率<0.5% 保留原有业务逻辑代码,3天完成适配 方案采用分层架构设计,支持多种硬件平台和操作系统,提供从模型导出到部署的全流程指导,为工业视觉检测提供高

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 196

HDU3415 - Max Sum of Max-K-sub-sequence - 单调队列

1.题目描述: Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8024    Accepted Submission(s): 2929 Proble

终有绿洲摇曳在沙漠 432

AMBA-CHI协议详解(一)

CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。

Crazzy_M的博客 1万+

HyperLynx仿真(一)LineSim简单介绍

可以选择设置信号线与信号线之间默认的距离和信号线与同平面的平面之间的距离,这些设置根据工程师项目上经常使用的情况而设置,也可以选择不设置,在每次仿真时根据需要再对每一个仿真单独设置。仿真属性的设置对话框包含一般设置、 显示颜色设置、LineSim 设置、BoardSim 设置、 层叠默认设置、焊盘类型设置、仿真示波器默认设置、电路仿真器默认设置、电源完整性设置及高级设置。第一次使用HyperLynx软件时需要设置仿真相关环境,包括仿真软件的基本设置、模型库路径设置、仿真控制器控制、单位等。...

小幽余生不加糖 8948

【DP+单调队列】 hdu3415 Max Sum of Max-K-sub-sequence

Max Sum of Max-K-sub-sequence 题目:http://acm.hdu.edu.cn/showproblem.php?pid=3415 题意:一个长度为n包含正负整数的数环,即第1个的左边是第n个。从中选一个不超过k的序列,使得序列和最大,最大值相同选开始点最小的,开始点相同选长度最小的。 题解:不难看出动态方程为dp[i]=max{sum[i]-sum[j]}(i-

Ted's 游乐园 2231

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

hdu 3415 Max Sum of Max-K-sub-sequence(单调队列)

Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5385    Accepted Submission(s): 1952 Problem Description

WEYuLi的专栏 827

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32F407中文手册

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

HDU 3415 Max Sum of Max-K-sub-sequence[单调队列优化dp]

这题是有下界的最大子段和, 无上下界的最大子段和请看 hh大牛把这个归为单纯的单调队列题, 因为这个状态间不用转移, 其实无所谓啦, 思路都是一样的 思路: 单调队列优化dp 以i结尾的最大子段和 d[i] = max{ sum[i]-sum[k] | k=[i-K , i-1] }. 化为 d[i] = max(f[k])+sum[i]. f[k]=-sum[k], k=[i-k, i

tclh123 - 悲剧的泳裤王子 1323

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

hdu3415 Max Sum of Max-K-sub-sequence 单调队列

//hdu3415 Max Sum of Max-K-sub-sequence //单调队列 //首先想到了预处理出前缀和利用s[i] - s[j]表示(j,i]段的和 //之后的问题就转换成了求一个最小的s[j]了,这样就可以单调队列 //求最小值。 //队列中维护的是区间的开始的位置j,我们插入队列中的是j-1,因为 //这个时候s[i] - s[j-1]刚好就是[j,i]段闭区间的和 /

TIMELIMITE的专栏 735

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU-3415 Max Sum of Max-K-sub-sequence 【单调队列】

Given a circle sequence A[1],A[2],A[3]…A[n]. Circle sequence means the left neighbour of A[1] is A[n] , and the right neighbour of A[n] is A[1]. Now your job is to calculate the max sum of a Max-K-sub...

slass-mot-odet 485

HDU 3415-Max Sum of Max-K-sub-sequence 单调队列

Given a circle sequence A[1],A[2],A[3]......A[n]. Circle sequence means the left neighbour of A[1] is A[n] , and the right neighbour of A[n] is A[1].  Now your job is to calculate the max sum of a Ma

thunderMrbird的博客 391

Max Sum of Max-K-sub-sequence HDU - 3415(最大连续k子段和,单调队列)

Max Sum of Max-K-sub-sequence HDU - 3415题意:找出循环数列中长度不超过k的最大的子段和;要找的子段的长度不超过k,普通思路就是由长度为1找到长度为k;O(nk)的复杂度,k小点还好说, 如果k很大就不可...

Sirius_han的博客 635

[单调队列] hdu 3415 Max Sum of Max-K-sub-sequence

题意: 给n和k,再给你n个形成环的数 问你连续不超过k个数的最大和是多少 并输出区间,和一样以左端点最小,再一样以长度最小 思路: 我们记录前缀和sum[i] 开一个单调队列维护sum[i-1]的值最小 因为对于到当前位置的和为sum[i]-sum[j] 如果sum[j]越小,那么sum[i]就越大 所以里面维护的就是到当前位置符合要求最小的sun[j] 代码: #inclu

Enmity_Dark 724

hdu 3415 Max Sum of Max-K-sub-sequence dp+单调队列

Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6005    Accepted Submission(s): 2190 Problem Description

smz436487的专栏 473

HDU 3415 Max Sum of Max-K-sub-sequence (单调队列)

Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4573    Accepted Submission(s): 1653 Problem Description Give...

weixin_34128534的博客 105

HDU 3415 Max Sum of Max-K-sub-sequence 单调队列

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3415 题意:求序列中长度不大于k的连续子序列的最大和使多少 我们可以用ANS[i] 表示 以第i个数为右边界的一个K区间的最大和的值 那么有方程 显然这里可以用一个长度为k的单调递增队列来维护最小值代码:#include <bits/stdc++.h> #define sf scanf #def

SolarDomo的博客 387

HDU 3415 Max Sum of Max-K-sub-sequence(单调队列)

Given a circle sequence A11,A22,A33......Ann. Circle sequence means the left neighbour of A11 is Ann , and the right neighbour of Ann is A11. Now your job is to calculate the max sum of a Max-K-sub-sequence. Max-K-sub-sequence means a continuous non-empty

风的记忆 384

【HDU】3415Max Sum of Max-K-sub-sequence(单调队列问题)

Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10129Accepted Submission(s): 3729 Problem Description Given a circle sequenc...

红点雷龙XL 192

Max Sum of Max-K-sub-sequence HDU - 3415(单调队列)

题意 给你一个序列,要找出一个子序列使得子序列的长度小于等于k,让子序列值最大,输出最大值并且输出子序列的左右位置 思路 利用前缀和的思想,sum[i]-sum[j],i-j<=k就是我们要求的子序列。 我们用单调队列维护这个前缀,队列里放的是[i-k,i-1],并且因为是单调队列所以队列的首部是最小的,我们只需要求sum[i]-sum[dq.front()]然后取个max就可以了。...

leekerian的博客 311
上一篇: 单调队列—— HDU 4193 Non-negative Partial Sums
下一篇: UVa 10905 - Children's Game(求多个正整数排列后,所得的新的数字的极值)
庞老板
博客等级 码龄15年 127粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值