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]段闭区间的和 //这里用两种方式实现,一种是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 单调队列的更多相关文章
- poj3017 Cut the Sequence 单调队列 + 堆 dp
描述 把一个正数列 $A$分成若干段, 每段之和 不超过 $M$, 并且使得每段数列的最大值的和最小, 求出这个最小值. 题目链接 题解 首先我们可以列出一个$O(n^2)$ 的转移方程 : $F_i ...
- $Poj3017\ Cut\ The\ Sequence$ 单调队列优化$DP$
Poj AcWing Description 给定一个长度为N的序列 A,要求把该序列分成若干段,在满足“每段中所有数的和”不超过M的前提下,让“每段中所有数的最大值”之和最小. N<=10 ...
- POJ 3709 K-Anonymous Sequence (单调队列优化)
题意:给定一个不下降数列,一个K,将数列分成若干段,每段的数字个数不小于K,每段的代价是这段内每个数字减去这段中最小数字之和.求一种分法使得总代价最小? 思路:F[i]表示到i的最小代价.f[i]=m ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- 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 ...
- 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 ...
- 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 ...
- K - Max Sum Plus Plus
K - Max Sum Plus Plus Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- [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 ...
随机推荐
- [BZOJ3209]花神的数论题 组合数+快速幂
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2498 Solved: 1129[Submit][Status][Disc ...
- (十三)MySQL主从复制
(1)工作原理 (2)主从实现 1) 环境介绍 cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) MySQL版本:5.7 mys ...
- Spring:基于注解的依赖注入的使用
1.什么是pojo?什么是bean? 首先,在之前几篇Spring的介绍文章当中,自己都提到了一个名词叫做POJO类,但是在回顾Spring的注解的使用的时候,去形容java当中的对象还有一个名词是叫 ...
- nodejs获取ASP.Net WebAPI(IIS Windows验证)
处理了很多天,终于使用Nodejs可以发出请求至WebAPI,能够正常处理数据了 首先加入npm包 npm install httpntlm 在app.js中加入代码 var httpntlm = r ...
- paramiko 使用总结(SSH 操作远端机器)
1.用户名.密码登陆方式 import paramikoparamiko.util.log_to_file('paramiko.log') # 记录日志文件ssh = paramiko.SSHClie ...
- django URL参数在view中传递和Template的反向解析方式
一. URL参数在view中传递 1.带参数名:通过named group方式传递指定参数,语法为: (?P<name>pattern), name 为传递参数的名称,pattern代表所 ...
- [centos6.5] yum makecache 连接错误的解决办法
http://mirrors.163.com/.help/centos.html 访问这个就懂了
- npm命令要记
npm list - depth 0 查看依赖 cnpm install 安装 npm outdated 查看模块过时 npm cache clear
- 3、Django实战第3天:数据建模
users modesl.py设计 UserProfile 用户信息 EmailVerifyRecord 验证码 Banner 轮播图 之前我们生成了Django默认的数据表,里面有张表示auth-u ...
- ( 转 ) UML 类图
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Compositi ...