[WOJ1318]和最大
题目链接:###
题目分析:###
首先我们要知道当这是一个线性的序列的时候应该怎么做:最大子序和
这里是线性的,就把数组复制两遍即可
好像有些细节要处理(也可能是我代码写丑了),具体的都在代码里,挺好理解的
代码:###
#include<bits/stdc++.h>
#define MAXN (100000+5)
using namespace std;
inline int read(){
int cnt=0,f=1;char c;
c=getchar();
while(!isdigit(c)){
if(c=='-')f=-f;
c=getchar();
}
while(isdigit(c)){
cnt=cnt*10+c-'0';
c=getchar();
}
return cnt*f;
}
int n,k,t,l=1,r=1,ans=-(1<<21);
int ansl,ansr;
int a[2*MAXN],sum[2*MAXN],q[2*MAXN],pos[2*MAXN],f[2*MAXN];
int main(){
t=read();
while(t--){
l=r=0;
q[0]=0;pos[0]=0;
ans=-(1<<30);
n=read();k=read();
for(register int i=1;i<=n;i++){
a[i]=a[i+n]=read();sum[i]=sum[i+n]=0;if(a[i]>ans){ans=a[i];ansl=ansr=i;}
}
for(register int i=1;i<=2*n;i++)sum[i]=sum[i-1]+a[i];
for(register int i=1;i<=2*n;i++){
int u=sum[i];
while(u<q[r]&&l<=r)r--;
q[++r]=u;pos[r]=i;
while((pos[l]<i-k||pos[l]<i-n)&&l<=r)l++;
int v=q[l];
if(l==r)continue;
if(u-v>ans){
ans=u-v;
ansl=pos[l]+1;ansr=i;
if(ansl>n)ansl-=n;
if(ansr>n)ansr-=n;
}
}
printf("%d %d %d\n",ans,ansl,ansr);
}
return 0;
}
[WOJ1318]和最大的更多相关文章
随机推荐
- 细数AutoLayout以来UIView和UIViewController新增的相关API
本文转载至 http://www.itjhwd.com/autolayout-uiview-uiviewcontroller-api/ 细数AutoLayout以来UIView和UIViewContr ...
- 2016/05/25 抽象类与API(接口)差别
简单来说, 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的 ...
- android支付
这里不讲具体的某个平台的支付使用,在工作中,公司使用到了ping++支付,使用它的好处是可以不用关心某个平台的支付了,例如:微信支付.支付宝支付等,太多的平台有个整合,是一个很好的事情,当然这也减轻了 ...
- Codility经典算法题之九:MissingInteger
Task description: This is a demo task. Write a function: that, given an array A of N integers, retur ...
- Hive两种访问方式:HiveServer2 和 Hive Client
老版HiveClient: 要求比较多,需要Hive和Hadoop的jar包,各配置环境. HiveServer2: 使得与YARN和HDFS的连接从Client中独立出来, ...
- react native 之 redux
第一章 认识redux 说的通俗且直白一点呢,就是redux提供了一个store,独立的一个内存区,然后放了一些state,你可以在任何component中访问到state,这些state要更改怎么 ...
- ES6的相关新属性
ES6 引入了类这个概念. 1.class……extends es6中的class与es5 中的function差不多: class Student extends People , student ...
- easyUI-右键菜单,关闭选项卡
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- poj 1469 COURSES 解题报告
题目链接:http://poj.org/problem?id=1469 题目意思:有 N 个人,P个课程,每一个课程有一些学生参加(0个.1个或多个参加).问 能否使得 P 个课程 恰好与 P 个学生 ...
- OpenCV——PS滤镜算法之 Ellipsoid (凸出)
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...