hdu 3415 Max Sum of Max-K-sub-sequence 单调队列优化DP
题目链接: https://www.cnblogs.com/Draymonder/p/9536681.html
同上一篇文章,只是 需要记录最大值的开始和结束的位置
#include <iostream>
#include <string.h>
#include <cmath>
using namespace std;
const int N = 1e5 + ; int n,k;
int s[N<<],sum[N<<];
int Q[N<<]; int main ()
{
freopen("in.txt","r",stdin);
int T; scanf("%d",&T);
while (T--) {
memset(Q,,sizeof(Q));
memset(sum,,sizeof(sum));
scanf("%d %d", &n, &k);
for(int i=; i<=n; i++)
scanf("%d",&s[i]), s[i+n]=s[i];
n<<=;
for(int i=;i<=n;i++)
sum[i] = sum[i-]+s[i]; //printf("%d ",sum[i]);
// for(int i=1;i<=n;i++)
// printf("%d ", sum[i]);
// puts("");
int mx = -N, ans1=n+,ans2=-;
for(int i=;i<=n;i++) {
if(i <= k) {
if(sum[i] > mx) {
mx = sum[i];
ans1=,ans2=i;
}
}
}
//printf("%d %d\n",ans1, ans2);
int st=,ed=;
for(int i=; i<=n; i++) {
//[i-k+1,i] 区间长度为k
while (st < ed && Q[st] < i-k)
st++;
if(st < ed) {
int ans = sum[i] - sum[Q[st]];
if(mx < ans) {
mx =ans;
ans1 = Q[st]+;
ans2 = i;
}
}
while (st < ed && sum[i] <= sum[Q[ed-]])
ed--;
Q[ed++] = i;
//cout << i<<" "<<ans1 <<" "<<ans2<<endl;
}
printf("%d %d %d\n", mx, ans1>n/?ans1-n/:ans1, ans2>n/?ans2-n/:ans2); }
return ;
}
hdu 3415 Max Sum of Max-K-sub-sequence 单调队列优化DP的更多相关文章
- HDU 5945 / BestCoder Round #89 1002 Fxx and game 单调队列优化DP
Fxx and game 问题描述 青年理论计算机科学家Fxx给的学生设计了一款数字游戏. 一开始你将会得到一个数\:XX,每次游戏将给定两个参数\:k,tk,t, 任意时刻你可以对你的数执行下面 ...
- 【单调队列优化dp】HDU 3401 Trade
http://acm.hdu.edu.cn/showproblem.php?pid=3401 [题意] 知道之后n天的股票买卖价格(api,bpi),以及每天股票买卖数量上限(asi,bsi),问他最 ...
- bzoj1855: [Scoi2010]股票交易 单调队列优化dp ||HDU 3401
这道题就是典型的单调队列优化dp了 很明显状态转移的方式有三种 1.前一天不买不卖: dp[i][j]=max(dp[i-1][j],dp[i][j]) 2.前i-W-1天买进一些股: dp[i][j ...
- 【HDU 3401 Trade】 单调队列优化dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3401 题目大意:现在要你去炒股,给你每天的开盘价值,每股买入价值为ap,卖出价值为bp,每天最多买as ...
- 单调队列优化dp,k次移动求最长路
洛谷2254 给你k次移动 每次移动给你一个时间段 a,b和方向dir 地图上有障碍物 为了不撞上障碍物你可以施法让箱子停下来 问箱子可以走的最长路 ((以下是洛谷的题解)) /*首先考虑对于时间t来 ...
- hdu 3401 单调队列优化DP
Trade Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- hdu 3401 单调队列优化+dp
http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others) Memor ...
- 【HDU】3401:Trade【单调队列优化DP】
Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 4122 Alice's mooncake shop 单调队列优化dp
Alice's mooncake shop Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...
- hdu 5945 Fxx and game(单调队列优化DP)
题目链接:hdu 5945 Fxx and game 题意: 让你从x走到1的位置,问你最小的步数,给你两种走的方式,1.如果k整除x,那么你可以从x走一步到k.2.你可以从x走到j,j+t<= ...
随机推荐
- php表单身份验证
1. index.php <form method="post" action="dbtest.php"> 姓名: ...
- ffmpeg综合应用示例(三)——安卓手机摄像头编码
本文的示例将实现:读取安卓手机摄像头数据并使用H.264编码格式实时编码保存为flv文件.示例包含了 1.编译适用于安卓平台的ffmpeg库 2.在java中通过JNI使用ffmpeg 3.读取安卓摄 ...
- [django]Django model中数据批量导入bulk_create()
参考: https://www.cnblogs.com/ccorz/p/Django-model-zhong-shu-ju-pi-liang-dao-rubulkcreat.html import o ...
- [py]py2自带Queue模块实现了3类队列
py2自带Queue实现了3类队列 先搞清楚几个单词 Queue模块实现了三类队列: FIFO(First In First Out,先进先出,默认为该队列), 我们平时泛指的队列, LIFO(Las ...
- poj3468A Simple Problem with Integers(线段树的区域更新)
http://poj.org/problem?id=3468 真心觉得这题坑死我了,一直错,怎么改也没戏,最后tjj把q[rt].lz改成了long long 就对了,真心坑啊. 线段树的区域更新. ...
- 获取多达 16GB 的 Dropbox 免费空间!
Dropbox官网
- c++中的构造(包括移动),赋值(包括移动),析构详解
这五种操作:构造(包括移动),赋值(包括移动),析构其实就是定义了对一个对象进行构造,赋值,析构时的行为.理解这些行为并不复杂,复杂的是理解在继承下这些行为的表现.需要注意的是他们并不会被继承(传统意 ...
- 【环境变量】删掉centos原有的openjdk并安装sun jdk
一.卸载原有openjdk rpm -qa | grep java 之后,将展示出来的全部卸载掉,我这里是5个 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111 ...
- Javascript-逻辑运算符非(!)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- memcache图形管理工具
http://www.junopen.com/memadmin/其中有使用截图和介绍 https://github.com/junstor/memadmin 下载地址