[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]和最大的更多相关文章
随机推荐
- ios+Appium+Java
To run iOS tests, you can follow these steps : (Note : I am using Java language here in Eclipse IDE ...
- Codeforces Round #422 (Div. 2) E. Liar 后缀数组+RMQ+DP
E. Liar The first semester ended. You know, after the end of the first semester the holidays beg ...
- How MySQL Opens and Closes Tables refuse connections 拒绝连接的原因 file descriptors
MySQL :: MySQL 5.7 Reference Manual :: 8.4.3.1 How MySQL Opens and Closes Tables https://dev.mysql.c ...
- hadoop yarn namenode datanoe 启动异常问题解决 分析日志
cat logs/hadoop-root-datanode-hadoop1.log ********************************************************** ...
- Shell编程——Shell中的数学运算
在Linux Shell中进行数学运算,通常能够使用的运算符有: 简单运算: let [] (()) 高级运算: expr bc 1.let命令 let命令是bash内置命令.能够实现简单的算术以及逻 ...
- 数据库的事务与ACID
一.事务: 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).在计算机术语中,事务通常就是指数据库事务. 二 ...
- KbmMW资源汇总(特别是xalion的文章)
KbmMW框架是收费的,不在此提供下载,如需购买,请自行联系作者Kim Madsen. 网址资源: 官网主页:http://www.components4programmers.com/product ...
- 解决IE浏览器部分版本不支持background-size属性问题
background-size是CSS3新增的属性,现在有很多浏览器都支持CSS3了.但是IE浏览器有些版本还是不支持,比如IE8,IE9也有些CSS3的属性会支持,但是有些也不支持.在这里就了解一下 ...
- SpringBoot使用logback日志记录
在resources里的配置文件: logback-spring.xml <?xml version="1.0" encoding="UTF-8" ?&g ...
- 通过Toad工具查看dmp里面的表
今天有同事要查看dmp里面的表是否有数据,虽然可以把单表数据通过exp导出查看,但还是稍显有点麻烦,要花时间. 无意中发现toad工具可以直接查看dmp里面的表数据. 第一步:Database--&g ...