//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]段闭区间的和 //这里用两种方式实现,一种是stl,一种是手动模拟,两者的速度,測试的
//结果在杭电測试都是一样的,499ms。
//
//单调队列的路还长着,继续走吧 #include <cstdio>
#include <queue>
#include <algorithm>
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 8;
ll a[maxn*2];
ll sum[maxn*2];
ll x[maxn * 2];
int deq[maxn * 2];
int n,k;
int mod;
void input(){
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
for (int i=n+1;i<=2*n;i++){
a[i] = a[i-n];
} sum[0] = 0; for (int i=1;i<=n;i++){
sum[i] = sum[i-1] + a[i];
} for (int i=1;i<k;i++){
sum[i+n]= sum[i+n-1] + a[i];
}
mod = n;
n = n + k - 1; } void solve(){
int s,e;
int head = 0,tail = 0;
ll mx = -1e10;
for (int i=1;i<=n;i++){
while(tail > head && sum[i-1]<=sum[deq[tail-1]])
tail--;
while(tail > head && deq[head]<i-k)
head++;
deq[tail++] = i-1;
if (sum[i] - sum[deq[head]] > mx){
mx = sum[i] - sum[deq[head]];
s = deq[head] + 1;
e = i;
}
} if (e > mod)
e -= mod;
printf("%lld %d %d\n",mx,s,e); //printf("%lld %d\n",x[mk],(mk+k)%n);
} //void solve(){
// int s,e;
// deque<int> deq;
// deq.clear();
// ll mx = -1e10;
// for (int i=1;i<=n;i++){
// while(!deq.empty() && sum[i-1]<=sum[deq.back()])
// deq.pop_back();
// while(!deq.empty() && deq.front()<i-k)
// deq.pop_front();
// deq.push_back(i-1);
// if (sum[i] - sum[deq.front()]>mx){
// mx = sum[i] - sum[deq.front()];
// s = deq.front() + 1;
// e = i;
// }
// }
//
// if (e > mod)
// e -= mod;
// printf("%lld %d %d\n",mx,s,e);
//
// //printf("%lld %d\n",x[mk],(mk+k)%n);
//} int main(){
//freopen("1.txt","r",stdin);
int t;
scanf("%d",&t);
while(t--){
input();
solve();
}
return 0;
}

hdu3415 Max Sum of Max-K-sub-sequence 单调队列的更多相关文章

  1. poj3017 Cut the Sequence 单调队列 + 堆 dp

    描述 把一个正数列 $A$分成若干段, 每段之和 不超过 $M$, 并且使得每段数列的最大值的和最小, 求出这个最小值. 题目链接 题解 首先我们可以列出一个$O(n^2)$ 的转移方程 : $F_i ...

  2. $Poj3017\ Cut\ The\ Sequence$ 单调队列优化$DP$

    Poj   AcWing Description 给定一个长度为N的序列 A,要求把该序列分成若干段,在满足“每段中所有数的和”不超过M的前提下,让“每段中所有数的最大值”之和最小. N<=10 ...

  3. POJ 3709 K-Anonymous Sequence (单调队列优化)

    题意:给定一个不下降数列,一个K,将数列分成若干段,每段的数字个数不小于K,每段的代价是这段内每个数字减去这段中最小数字之和.求一种分法使得总代价最小? 思路:F[i]表示到i的最小代价.f[i]=m ...

  4. hdu 1003 Max Sum (DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)   ...

  5. HDU3415:Max Sum of Max-K-sub-sequence(单调队列)

    Problem Description Given a circle sequence A[1],A[2],A[3]......A[n]. Circle sequence means the left ...

  6. hdu3415 Max Sum of Max-K-sub-sequence

       Max Sum of Max-K-sub-sequence Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64 ...

  7. Max Sum of Max-K-sub-sequence hdu3415

    Max Sum of Max-K-sub-sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  8. K - Max Sum Plus Plus

    K - Max Sum Plus Plus Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  9. [LeetCode] Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K

    Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...

随机推荐

  1. Codeforces 776 A.Serial Killer-String直接比较是否相同

    A Serial Killer time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  2. 分享HTTP Status 404(The requested resource is not available)的几种解决方案解决方法

    下面是直接copy的,如果有什么疑问or补充,请不吝指教! 原文地址:http://www.myexception.cn/java-web/1480013.html 这个问题搞了我两天的时间,找了各种 ...

  3. uva658(最短路径+隐式图+状态压缩)

    题目连接(vj):https://vjudge.net/problem/UVA-658 题意:补丁在修正 bug 时,有时也会引入新的 bug.假定有 n(n≤20)个潜在 bug 和 m(m≤100 ...

  4. 递归输入与引用传值(UVa839 Not so Mobile)

    题目的大意是一个树形天平,输入给出样例的个数,然后空一行,每行4个数W1,D1,W2,D2,分别代表天平左侧的重量.力臂和天平右侧的重量.力臂.如果W1或者W2为0,则代表该节点有左子树或右子树,如果 ...

  5. 百度Map-JSAPI-覆盖物范围查询标记

    1.单点标记并添加说明信息 2.可视化区域范围 3.矩形覆盖物经纬度范围 说明:该项目为javaweb项目,标记点信息为数据库中存储信息] 参考API链接 http://api.map.baidu.c ...

  6. [BZOJ4316]小C的独立集(圆方树DP)

    题意:求仙人掌图直径. 算法:建出仙人掌圆方树,对于圆点直接做普通的树上DP(忽略方点儿子),方点做环上DP并将值直接赋给父亲. 建图时有一个很好的性质,就是一个方点在邻接表里的点的顺序正好就是从环的 ...

  7. [BZOJ4897][THUSC2016]成绩单(DP)

    4897: [Thu Summer Camp2016]成绩单 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 220  Solved: 132[Subm ...

  8. 关于char类型的说明

    #include<iostream> using namespace std; int main() {  char ch=128;//VC编译器默认是有符号的.但c并未明确给出.由编译器 ...

  9. 【读书笔记】Elasticsearch集成Hadoop最佳实践

    前言 本文记录[Elasticsearch集成Hadoop最佳实战]读书笔记 本书总计209页,共7章节,计划时间:20180712-20180717 (每天至少40页) 本文代码地址: https: ...

  10. TCP长连接与短连接的区别(转)

    1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...