码迷,mamicode.com
首页 > 其他好文 > 详细

hdu1166 敌兵布阵

时间:2018-04-21 21:49:12      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:void   long   ++   case   date   str   max   namespace   color   

似乎当初就是学到这里然后自己就去乱搞了?然后就弃坑了?想想挺难受的其实

 

 

树状数组板子题。初始化wa了一发

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 #include<cmath>
 7 #include<vector>
 8 using namespace std;
 9 #define mem(a,b) memset(a,b,sizeof(a))
10 #define ll long long
11 #define inf 1000000000
12 #define maxn 40000
13 #define eps 1e-12
14 #define mod 1000000007
15 inline int read()
16 {
17     int x=0,f=1;char ch=getchar();
18     while(ch<0||ch>9) {if(ch==-) f=-1;ch=getchar();}
19     while(ch>=0&&ch<=9) {x=10*x+ch-0;ch=getchar();}
20     return x*f;
21 }
22 int a[50005],n;
23 char s[20];
24 int lowbit(int i)
25 {
26     return i&(-i);
27 }
28 void update(int i,int peo)
29 {
30     while(i<=n)
31     {
32         a[i]+=peo;i+=lowbit(i);
33     }
34 }
35 int sum(int i)
36 {
37     int sum=0;
38     while(i>0)
39     {
40         sum+=a[i];
41         i-=lowbit(i);
42     }
43     return sum;
44 }
45 int main()
46 {
47     int T;
48     T=read();
49     int num=1,peo;
50     while(T--)
51     {
52         n=read();
53         mem(a,0);
54         for(int i=1;i<=n;++i)  peo=read(),update(i,peo);
55         printf("Case %d:\n",num++);
56         while(scanf("%s",s))
57         {
58             if(s[0]==E) break;
59             int x,y;
60             x=read();y=read();
61             if(s[0]==Q) printf("%d\n",sum(y)-sum(x-1));
62             else if(s[0]==A) update(x,y);
63             else update(x,-y);
64         }
65     }
66     return 0;
67 }

 

hdu1166 敌兵布阵

标签:void   long   ++   case   date   str   max   namespace   color   

原文地址:https://www.cnblogs.com/TYH-TYH/p/8903854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!