传送门

题意:

  给出一个有 N 个数字([-1000 , 1000],N ≤ 105)的环状序列;

  让你求一个和最大的连续子序列,并记录起始点。

  要求这个连续子序列的长度小于等于K,加和相同的不同区间,输出起点最小的那组答案。

题解:

  因为序列是环状的,所以可以在序列后面复制一段(或者复制前k - 1个数字)。

  如果用sum[ i ]来表示复制过后的序列的前 i 个数的和;

  那么任意一个子序列[ i..j ]的和就等于s[ j ]-s[ i-1 ]。

  对于每一个 j,用s[ j ]减去最小的一个s[ i ](i ≥ j-k+1)就可以得到以 j 为终点长度不大于k的和最大的序列了。

  将原问题转化为这样一个问题后,就可以用单调队列解决了。

AC代码:

 #include<iostream>
#include<algorithm>
#include<deque>
#include<cstdio>
#include<cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define pii pair<int ,int >
const int maxn=2e5+; int n,k;
int a[maxn];
int sum[maxn];
deque<int >deq; void Solve()
{
sum[]=;
for(int i=;i < *n;++i)
sum[i]=sum[i-]+a[i];
while(!deq.empty())
deq.pop_back();
deq.push_back(); int ans=-INF;
int ansL,ansR;
for(int i=;i < *n;++i)
{
while(!deq.empty() && deq.front() < i-k)
deq.pop_front();///维护[i-k,i-k+1,...,i-1]的最小值
int curSum=sum[i]-sum[deq.front()];
if(curSum > ans)
{
ans=curSum;
ansL=deq.front()+;
ansR=i;
}
while(!deq.empty() && sum[deq.back()] >= sum[i])
deq.pop_back();
deq.push_back(i);
}
if(ansR > n)
ansR -= n;
printf("%d %d %d\n",ans,ansL,ansR);
}
int main()
{
// freopen("C:\\Users\\hyacinthLJP\\Desktop\\in&&out\\contest","r",stdin);
int test;
while(~scanf("%d",&test))
{
while(test--)
{
scanf("%d%d",&n,&k);
for(int i=;i <= n;++i)
{
scanf("%d",a+i);
a[n+i]=a[i];
}
Solve();
}
}
return ;
}

hdu 3415"Max Sum of Max-K-sub-sequence"(单调队列)的更多相关文章

  1. HDU 4123 Bob's Race:树的直径 + 单调队列 + st表

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4123 题意: 给你一棵树,n个节点,每条边有长度. 然后有m个询问,每个询问给定一个q值. 设dis[ ...

  2. HDU 4193 Non-negative Partial Sums(想法题,单调队列)

    HDU 4193 题意:给n个数字组成的序列(n <= 10^6).求该序列的循环同构序列中,有多少个序列的随意前i项和均大于或等于0. 思路: 这题看到数据规模认为仅仅能用最多O(nlogn) ...

  3. HDU 5945 / BestCoder Round #89 1002 Fxx and game 单调队列优化DP

    Fxx and game 问题描述   青年理论计算机科学家Fxx给的学生设计了一款数字游戏. 一开始你将会得到一个数\:XX,每次游戏将给定两个参数\:k,tk,t, 任意时刻你可以对你的数执行下面 ...

  4. HDU 3410 &amp;&amp; POJ 3776 Passing the Message 单调队列

    题意: 给定n长的数组(下标从1-n)(n个人的身高,身高各不同样 问:对于第i个人,他能看到的左边最矮的人下标.(假设这个最矮的人被挡住了,则这个值为0) 还有右边最高的人下标,同理若被挡住了则这个 ...

  5. hdu 1003 Max Sum (DP)

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

  6. HDU 1081:To The Max

    To The Max Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  7. hdu 3415 单调队列

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

  8. HDU 3530 单调队列

    题目大意:给你n个数, 让你问你最长的满足要求的区间有多长,区间要求:MAX - MIN >= m && MAX - MIN <= k 思路:单调队列维护递增和递减,在加入 ...

  9. HDU 3415 Max Sum of Max-K-sub-sequence 最长K子段和

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3415 意甲冠军:环.要找出当中9长度小于等于K的和最大的子段. 思路:不能採用最暴力的枚举.题目的数据量是 ...

  10. hdu 3415 Max Sum of Max-K-sub-sequence(单调队列)

    题目链接:hdu 3415 Max Sum of Max-K-sub-sequence 题意: 给你一串形成环的数,让你找一段长度不大于k的子段使得和最大. 题解: 我们先把头和尾拼起来,令前i个数的 ...

随机推荐

  1. DAY05、基本数据类型与内置方法

    一.可变类型与不可变类型: 1.可变类型:值改变,但是id不变 2.不可变类型:值改变,id也改变 二.数据类型: 1.数字类型: 1.1:整型int: 用途:记录年龄.等级.数量 定义方式:age ...

  2. 莫烦keras学习自修第四天【分类问题】

    1.代码实战 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ # 导入numpy import numpy as np np.random.seed(133 ...

  3. 生存模型(Survival Model)介绍

    https://www.cnblogs.com/BinbinChen/p/3416972.html 生存分析,维基上的解释是: 生存分析(Survival analysis)是指根据试验或调查得到的数 ...

  4. Upload Files In ASP.NET Core 1.0 (Form POST And JQuery Ajax)

    Uploading files is a common requirement in web applications. In ASP.NET Core 1.0 uploading files and ...

  5. BZOJ1449[JSOI2009]球队收益&BZOJ2895球队预算——最小费用最大流

    题目描述 输入 输出 一个整数表示联盟里所有球队收益之和的最小值. 样例输入 3 3 1 0 2 1 1 1 10 1 0 1 3 3 1 2 2 3 3 1 样例输出 43 提示   要求总费用最低 ...

  6. shelve 模块

    shelve 模块概述:   shelve是python的自带model.   可以直接通过import shelve来引用.   shelve类似于一个存储持久化对象的持久化字典,即字典文件.   ...

  7. MT【307】周期数列

    (2017浙江省数学竞赛) 设数列$\{a_n\}$满足:$|a_{n+1}-2a_n|=2,|a_n|\le2,n\in N^+$证明:如果$a_1$为有理数,则从某项后$\{a_n\}$为周期数列 ...

  8. nfs的配置文件/etc/exports

    /etc/exports  文件格式 <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)] a. 输出目录:输出目录是指NFS系统中 ...

  9. 【BZOJ3165】[HEOI2013]Segment(李超线段树)

    [BZOJ3165][HEOI2013]Segment(李超线段树) 题面 BZOJ 洛谷 题解 似乎还是模板题QwQ #include<iostream> #include<cst ...

  10. 【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)

    [BZOJ4061][Cerc2012]Farm and factory(最短路,构造) 题面 BZOJ 然而权限题QwQ. 题解 先求出所有点到达\(1,2\)的最短路,不妨记为\(d_{u,1}, ...