HDU3415
来源:互联网 发布:qq游戏hd登录网络异常 编辑:程序博客网 时间:2024/05/20 05:23
题意:给一串数,求解最大连续子序列和。
思路:和HDU1003一样,增加了两个条件,所取的区间长度必须在K范围内,另外这是一个循环数组,所以考虑可以用单调队列来做,另外可以直接循环数组操作,和1003差不多。
#include <iostream>#include <stdio.h>#include <cstring>#define N 200050using namespace std;int S[N],q[N];int MAX,T,n,K,flag;int first,last;int H,L;void solve(){ for(int i=n+1; i<n+K; i++) S[i]=S[n]+S[i-n]; n+=K; H=L=0; MAX=last=1; MAX=-1001; for(int i=1; i<n; i++) { while(L<H&&S[i-1]<S[q[H-1]-1]) H--; q[H++]=i; while(L<H&&i-q[L]+1>K) L++; if(S[i]-S[q[L]-1]>MAX) { MAX=S[i]-S[q[L]-1]; first=q[L]; last=i; } } last=(last-1)%flag+1; first=(first-1)%flag+1;}int main(){ scanf("%d",&T); while(T--) { scanf("%d%d",&n,&K); flag=n; for(int i=1; i<=n; i++) { scanf("%d",&S[i]); S[i]+=S[i-1]; } solve(); printf("%d %d %d\n",MAX,first,last); } return 0;}
另外贴上1003的代码:
#include <iostream>#include <stdio.h>using namespace std;int a[100001],b[100001];int main(){ int i,k=1,t,n; cin>>t; while(t--) { cin>>n; for(i=1;i<=n;i++) cin>>a[i]; b[1]=a[1]; for(i=2;i<=n;i++) if(b[i-1]<0) b[i]=a[i]; else b[i]=a[i]+b[i-1]; int Max=b[1],p=0,start,End=1; for(i=1;i<=n;i++) if(b[i]>Max) {Max=b[i]; End=i;} start=End; for(i=End;i>=1;i--) { p+=a[i]; if(p==Max) start=i; else continue; } printf("Case %d:\n%d %d %d\n",k++,Max,start,End); if(t) cout<<endl; } return 0;}
0 0
- HDU3415
- hdu3415
- HDU3415
- HDU3415
- HDU3415单调队列
- hdu3415 单调队列
- HDU3415单调队列
- hdu3415单调队列
- HDU3415【单调队列】
- HDU3415---单纯的单调队列
- hdu3415 dp最大k字段和
- hdu3415 单调队列求区间最大和
- hdu3415 Max Sum of Max-K-sub-sequence
- hdu3415 Max Sum of Max-K-sub-sequence
- hdu3415 Max Sum of Max-K-sub-sequence
- HDU3415:Max Sum of Max-K-sub-sequence(单调队列)
- hdu3415 Max Sum of Max-K-sub-sequence 单调队列
- hdu3415——Max Sum of Max-K-sub-sequence
- Hduoj1040【水题】
- Controlling How NSThread and NSRunLoop Exit
- HTTP 错误 500.19 - Internal Server Error
- 图论浅析--最短路之Bellman-Ford
- Java:注解(Annotation)自定义注解入门
- HDU3415
- Objective-C_实例变量可⻅度及方法
- Codeforces 547 D. Mike and Fish
- Android之——Service总结
- Spring MVC JSON数据交互-解析和返回JSON
- iOS 多线程技术1
- 第一次使用linux并编写了一个dump mysql的程序,记录下简单的步骤
- Ubuntu15.10 安装sublimetext并解决乱码问题
- 机房收费系统(三)——由row和rows引发的错误