T1 最大子序列的和
据芸哥的评价:“这是暴得不能更暴的暴力了,你不超时谁超时”
我是真的菜QAQ单调队列写了一半被标签上的线段树骗到 我的心路历程:“咦线段树!我不会诶,可以写树状数组嘛!呀超时怎么办 不怕不怕,怎么样都能过一个点的”,然后,呵呵,你一个点都不给我QAQ!!
1 /* 2 id:gww 3 language: 4 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 5 */ 6 #include<bits/stdc++.h> 7 #define ll long long 8 using namespace std; 9 const int N=500000+10; 10 const int inf=0x3f3f3f3f; 11 int n,a,b,k[N],c[N],ans=-inf; 12 int rd() 13 { 14 int x=0,w=0;char ch=0; 15 while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} 16 while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); 17 return w?-x:x; 18 } 19 20 int lowbit(int x) 21 { 22 return x&(-x); 23 } 24 25 void update(int x,int y) 26 { 27 while(x<=n) 28 { 29 c[x]+=y; 30 x+=lowbit(x); 31 } 32 } 33 34 int query(int x) 35 { 36 int ans=0; 37 while(x>0) 38 { 39 ans+=c[x]; 40 x-=lowbit(x); 41 } 42 return ans; 43 } 44 45 int main() 46 { 47 n=rd(),a=rd(),b=rd(); 48 for(int i=1;i<=n;i++) 49 {update(i,rd());} 50 for(int i=b;i<=n;i++) 51 for(int j=i;j>=i-a;j--) 52 { 53 ans=max(ans,query(i)-query(j-1)); 54 } 55 printf("%d",ans); 56 return 0; 57 }