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

Klocwork安装 简单介绍一下Klocwork在windows下的安装,操作系统是win7,Klocwork的版本是10.0。 第一步:由于Klocwork的安装程序已十分成熟,所以在安装之前不需要什么准备共走。双击Klocwork的安装包,会出现下图的安装引导界面,点击Next按钮。 第二步:下图是协议界面,点击Next按钮。 第三步:选择Klocwork的安装目录,点击Next按钮 第四步: 阅读详情

单调队列:

 一、 什么是单调(双端)队列
单调队列,顾名思义,就是一个元素单调的队列,那么就能保证队首的元素是最小(最大)的,从而满足动态规划的最优性问题的需求。
单调队列,又名双端队列。双端队列,就是说它不同于一般的队列只能在队首删除、队尾插入,它能够在队首、队尾同时进行删除。
【单调队列的性质】
一般,在动态规划的过程中,单调队列中每个元素一般存储的是两个值:
1、在原数列中的位置(下标)(一般也可以只保存在原数组中的下标,从而通过下标找到在序列中的值)
2、 他在动态规划中的状态值
而单调队列则保证这两个值同时单调。

单调队列:单调队列 即保持队列中的元素单调递增(或递减)的这样一个队列,可以从两头删除,只能从队尾插入。单调队列的具体作用在于,由于保持队列中的元素满足单调性,对手元素便是极小值(极大值)了。

例题       HDU 3415  Max Sum of Max-K-sub-sequence

 思路:

         题中的序列是一个环,每次在个k 连续的子序列中求子段和最大 ,所以先把序列展开成线性的序列,这需要在后面扩充K-1位;对于一个k子段,假设以j结尾,则i在区间[j-k+1, j]内,sum[j]-sum[i]就是i->j之间的子段和了,但是要求最大的,则只需要在区间[j-k+1, j]内,sum[i]取最小值,所以问题就看成了一个单调递增队列,队首元素取最小值,然后就是维护队列了,再就是要队首元素要在区间[j-k+1, j]内,如果不在则要移动队头,直到队首在区间内,就找到了最小值。

代码中关于双端队列的操作函数,看c++STL;

AC代码:

#include<iostream>
#include<queue>
using namespace std;
#define inf 0x3f3f3f3f
int sum[200040];
int a[200040];
int n,k;
int main()
{
	int T;
	int i,j;
	int max_sum;
	int start,end;
    deque<int>q;
    cin>>T;
	while(T--)
	{
	   cin>>n>>k;
	   for(i=1;i<=n;i++)
		  scanf("%d",&a[i]);
	   for(j=i;j<n+k;j++)
		   a[j]=a[j-n];
	   sum[0]=0;
	   for(i=1;i<=n+k-1;i++)
	       sum[i]=sum[i-1]+a[i];
	   max_sum=-inf;
       q.clear();
	   for(i=1;i<=n+k-1;i++)
	   {
	       while(!q.empty()&&sum[q.back()]>=sum[i-1])
			   q.pop_back();
		   while(!q.empty()&&q.front()<i-k)
			   q.pop_front();
		   q.push_back(i-1);
		   if(sum[i]-sum[q.front()]>max_sum)
		   {
		      max_sum=sum[i]-sum[q.front()];
			  start=q.front()+1;
			  end=i;
		   }
	   }
	   if(end>n)end%=n;
	   cout<<max_sum<<" "<<start<<" "<<end<<endl;
	}
    return 0;
}










斑鬣狗优化算法(SHO)详解:从生物原理到代码实战 斑鬣狗优化算法(SHO)是一种新型元启发式优化算法,灵感来源于斑鬣狗的群体狩猎行为。该算法通过模拟斑鬣狗的包围猎物、协同狩猎和攻击猎物等生物行为,将优化问题转化为智能搜索过程。SHO算法包含探索与开发两个阶段,通过数学模型实现群体协作和自适应平衡,具有参数简单、收敛快等优势。文章系统介绍了SHO的生物基础、数学模型、实现方法(包括MATLAB和Python代码)、改进策略以及在函数优化、路径规划等领域的应用案例,最后讨论了算法的优势、局限性和未来研究方向。 阅读详情

相关推荐

【毕业设计】_基于STM32单片机的按摩椅( 原理图+源码)

按摩器系统基于STM32单片机设计,作为核心控制单元。系统配备了OLED显示屏、蓝牙模块、喇叭模块、播报模块和光电感应模块。光电感应器用于检测是否有人接近,同时,系统可以通过蓝牙接收控制指令并执行相应的操作。该系统支持40℃的热敷功能以及气囊按摩功能,具备温度显示功能,并且可以通过按键切换不同的按摩模式。当光电感应器检测到有人时,按摩椅会自动启动。使用DHT11传感器的红色按钮可以调整温度。

2401_85381100的博客 724

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

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

htrdchh的博客 281

基于STM32的家用新风系统智能控制器 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了家用新风系统智能控制器的全功能开发,覆盖多传感器数据采集、双模式控制、PID调速、异常报警、掉电记忆等核心功能,全程采用保姆式无跳步教学,从硬件选型、接线、CubeMX配置、代码开发、调试排坑全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 464

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

Windows11+VS2022驱动开发环境搭建实战:从零到编译(避坑指南)

本文详细介绍了在Windows11系统下使用VS2022搭建驱动开发环境的完整流程,包括版本匹配、工具安装、环境配置及常见问题解决。重点强调了WDK与系统版本的严格匹配,以及VS2022中驱动开发组件的正确配置方法,帮助开发者高效避坑并成功编译第一个驱动程序。

weixin_29251337的博客 527

YOLO11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

YOLOv11改进大全:卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总

魔改工程师的博客 4516

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

Lammps实现甲烷与水的竞争吸附-循环不同气体分子

Lammps实现甲烷与水的竞争吸附

Rockyoung 5375

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

uniapp - 解决在线预览PDF文件空白打不开的问题,无论是后端下载二进制文件流pdf还是本地插件或JS预览查看打开白屏不显示,详细排查解决(适用于移动端H5网页、安卓/苹果app、微信小程序)

uniapp App端 实现pdf文件预览打开白屏解决,uniapp 在线预览pdf打开一片空白,跨域白屏,uni-app中使用WebView预览PDF文件打开空白,微信小程序(uniapp)预览PDF空白怎么办,下载PDF文件流后打开空白或无法打开的问题,Uniapp H5网页下载二进制pdf文件页面空白以及解决文件损坏打不开的情况,Uniapp app在线预览pdf文件流,PDF加载出来怎么办,服务器后端返回PDF文件流后前端进行下载但打开后一片白屏,解决pdf文件流,预览全是空白页,pdf文件流,下载

🏆 前端领域优质创作者 1万+

卫朋:IPD流程落地之产品开发验证阶段解读

IPD验证阶段

产品线负责人 1486

【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

SAP 批次管理(分割评估)

批次分割评估: 业务场景:企业要求各批次物料成本价格不一样。此时可以采用分割批次来实现不同成本 后台配置: (1)、激活分割评估 后台---物料管理----评估与科目设置---分割评估-----激活分割评估 (2)、配置分割评估 后台---物料管理----评估与科目设置---分割评估-----配置分割评估 进入全局性分类后,批次分割采用已有的评估类型“X自动(批)”: ...

willieyuan的博客 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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

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

Enmity_Dark 724

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 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): 4573Accepted Submission(s): 1653 Problem Description ...

anvt77205的博客 143

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 3415 Max Sum of Max-K-sub-sequence(单调队列)

题意:给出n个数绕成一圈,求一个长度不超过k的连续序列,使得它们的和尽量大,若有多解,令起始位置尽量小,还有多解,令区间长度尽量小。 思路:用单调队列可以O(n)解决,以前虽然做过单调队列的题,但也忘差不多了。。。把由于有环,那么把n个数复制一遍放在后面,反正长度不能超过k,没有问题,剩下的先把前n项和求出,对于i,每次向队列中添加sum[i-1],对于队列中的j,若sum[j]>sum[i-1

绝望的乐园 702

【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 1016 Prime Ring Problem【DFS】
下一篇: 首尾相连数组的最大子数组和【单调队列】
Job_yi
博客等级 码龄14年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值