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<= ...
随机推荐
- 在django项目中自定义manage命令(转)
add by zhj 是我增加的注释 原文:http://www.cnblogs.com/holbrook/archive/2012/03/09/2387679.html 我们都用过Django的dj ...
- javascript打开制定窗口大小的页面
<a onclick="window.open ('页面链接', 'newwindow', 'height=680, width=400, top=0, left=0, toolba ...
- Scala集合类详解
对scala中的集合类虽然有使用,但是一直处于一知半解的状态.尤其是与java中各种集合类的混合使用,虽然用过很多次,但是一直也没有做比较深入的了解与分析.正好趁着最近项目的需要,加上稍微有点时间,特 ...
- Word Add-in 函数调用顺序
这个图表明的函数的调用顺序,主要代码如下: // MyAddin.cpp : Implementation of DLL Exports. // Note: Proxy/Stub Informatio ...
- [LeetCode] 190. Reverse Bits_Easy tag: Bit Manipulation
Reverse bits of a given 32 bits unsigned integer. Example: Input: 43261596 Output: 964176192 Explana ...
- pd.read_csv操作读取分隔符csv和text文件
pandas.read_csv可以读取CSV(逗号分割)文件.文本类型的文件text.log类型到DataFrame 1. pandas.read_csv常用参数整理 也支持文件的部分导入和选择迭代 ...
- JDK eclipse selenium 安装以及环境变量的配置
原文地址https://www.cnblogs.com/zmhsoup/p/5249663.html [自动化学习笔记]_环境搭建Selenium2+Eclipse+Java+TestNG_(一) 目 ...
- 树莓派3B新版raspbian系统换国内源
树莓派新版系统更换了专门优化过的桌面环境PIXEL,正好手头有个闲置的TF卡决定刷上新版系统玩玩.下载刷系统过程很多教程页很简单.插卡,上电开机,释放卡上的剩余空间都很正常,因为树莓派官方源访问很慢下 ...
- Summary: Prime
最近遇到很多问题都跟Prime有关,于是总结一下: Prime definition:A prime number (or a prime) is a natural number greater t ...
- js值类型和引用类型的区别
1:赋值 值类型的赋值:直接将存储的数据赋值一份进行赋值,两份数据在内存中是完全独立的. 引用类型赋值:引用类型的赋值的时候,是将变量中的存储的地址赋值一份单独存储,但是两个变量中修改其中一个对象,另 ...