Tyvj1305最大子序和(单调队列优化dp)
描述
例如 1,-3,5,1,-2,3
当m=4时,S=5+1-2+3=7
当m=2或m=3时,S=5+1=6
输入格式
第二行有n个数,要求在n个数找到最大子序和
输出格式
测试样例1
输入
6 4
1 -3 5 1 -2 3
输出
7
备注
100%满足n,m<=300000
/*
单调队列优化dp
单调队列维护的是前缀和的递增序列
更新答案的时候从对首开始找第一个区间在m范围内的
f[i]表示到第i个数的不超过m的最大连续子段和,sum[i]表示i的前缀和
f[i]=max(sum[i]-sum[k])(i=> k >=i-m),所以要找最小的sum[k],因此用单调队列。
*/
#include<iostream>
#include<cstdio> using namespace std;
int n,m,tot,head,tail,x,k; struct node{
int v,u; //v代表值,u代表下标用来判断是否超过m
}q[]; int main()
{
scanf("%d%d",&n,&m);
scanf("%d",&tot);//第一个元素
head=;tail=;
q[head].v=tot;q[head].u=;
k=tot;
for(int i=;i<=n;i++)
{
scanf("%d",&x);
tot+=x;
while(q[tail-].v>=tot && tail->=head) tail--;//队列中只有一个元素且比当前和大,更新
q[tail].v=tot;
q[tail].u=i;//记录下标
tail++;
if(i-q[head].u>m) head++;//确定区间m
if(tot-q[head].v>k) k=tot-q[head].v; //更新答案
}
printf("%d\n",k);
return ;
}
Tyvj1305最大子序和(单调队列优化dp)的更多相关文章
- CF939F Cutlet (单调队列优化DP)
题目大意:要煎一块有两个面的肉,只能在一段k不相交的时间段$[l_{i},r_{i}]$内翻转,求$2*n$秒后,保证两个面煎的时间一样长时,需要最少的翻转次数,$n<=100000$,$k&l ...
- 单调队列优化DP,多重背包
单调队列优化DP:http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列优化多重背包:http://blog.csdn ...
- bzoj1855: [Scoi2010]股票交易--单调队列优化DP
单调队列优化DP的模板题 不难列出DP方程: 对于买入的情况 由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]} AP[i]*j是固定的,在队列中维护dp[i-w ...
- hdu3401:单调队列优化dp
第一个单调队列优化dp 写了半天,最后初始化搞错了还一直wa.. 题目大意: 炒股,总共 t 天,每天可以买入na[i]股,卖出nb[i]股,价钱分别为pa[i]和pb[i],最大同时拥有p股 且一次 ...
- Parade(单调队列优化dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2490 Parade Time Limit: 4000/2000 MS (Java/Others) ...
- BZOJ_3831_[Poi2014]Little Bird_单调队列优化DP
BZOJ_3831_[Poi2014]Little Bird_单调队列优化DP Description 有一排n棵树,第i棵树的高度是Di. MHY要从第一棵树到第n棵树去找他的妹子玩. 如果MHY在 ...
- 【单调队列优化dp】 分组
[单调队列优化dp] 分组 >>>>题目 [题目] 给定一行n个非负整数,现在你可以选择其中若干个数,但不能有连续k个数被选择.你的任务是使得选出的数字的和最大 [输入格式] ...
- [小明打联盟][斜率/单调队列 优化dp][背包]
链接:https://ac.nowcoder.com/acm/problem/14553来源:牛客网 题目描述 小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放时 ...
- 单调队列以及单调队列优化DP
单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的. 单调队列的一般应用: 1.维护区间最值 2 ...
随机推荐
- [USACO06JAN] 冗余路径 Redundant Paths
题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1. ...
- Pygame游戏开发入门(1)-开发框架
pygame库的安装 pip install pygame pygame最小开发框架 #Pygame Hello World Game import pygame,sys #引入pygame和sys( ...
- Windows学习总结(8)——DOS窗口查看历史执行过的命令的三种方式
在DOS窗口执行了一些列命令完成某项工作后,如果要查看都执行了那些命令,该如何办呢?(前提:DOS窗口未关闭的情况下) 一.方法一: 使用↑↓箭头上下翻看执行过的命令,此方式适宜执行命令较少的情况. ...
- jquery转义字符之单引号
jquery动态生成html,并且html中包含方法时,如 var varHtml = '<input type="button" value="点我删除" ...
- Tomcat启动时SecureRandom超级慢的问题
https://my.oschina.net/wangnian/blog/687914
- docker mysql 主从配置
docker安装运行单实例的MySQL参考另一篇文档 http://www.cnblogs.com/manger/p/7611309.html 1.首先在/data/script下创建两个文件my-m ...
- Android Studio Module 的添加与删除
1. 添加Module(此时可以字面翻译为“模块”,意译为“其他工程”) 2. 删除Module 你要知道,Android Studio的非人性设计,导致删除一个module都是繁琐的. 当你想在An ...
- git SSL certificate problem: unable to get local issuer certificate
cmd 命令行中输入 git config --global http.sslVerify false 之后再进行操作
- 【CV论文阅读】action recognition by dense trajectories
密集轨迹的方法是通过在视频帧上密集地采样像素点并且在追踪,从而构造视频的局部描述子,最后对视频进行分类的方法依然是传统的SVM等方法. 生成密集轨迹: (1)从8个不同的空间尺度中采样,它们的尺度差因 ...
- [Vue-rx] Watch Vue.js v-models as Observable with $watchAsObservable and RxJS
You most likely already have data or properties in your template which are controlled by third-party ...