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 }
0昏 时间超限

相关文章: