P4939 Agent2

链接:P4939

------------------------------------------------

这道题肯定是数据结构题。

------------------------------------------------

看一下题面,我们可以建立一个树状数组,维护的是每一天的咕咕咕数量,这样,操作0就变成了

区间加1,而操作0,就是单点查询。

------------------------------------------------

好像比较熟悉欸

------------------------------------------------

就是树状数组模板二

-------------------------------------------------

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int t[10000000];
 5 int n;
 6 int lowbit(int x){
 7     return x &-x;
 8 }
 9 void add(int x,int p){
10     while(p<=n){
11         t[p]+=x;
12         p+=lowbit(p);
13     }
14 }
15 int ask(int p){
16     int ans=0;
17     while(p){
18         ans+=t[p];
19         p-=lowbit(p);
20     }
21     return ans;
22 }
23 int f;
24 int x,y;
25 int m;
26 int main(){
27     scanf("%d%d",&n,&m);
28     for(int i=1;i<=m;++i){
29         scanf("%d",&f);
30         if(!f){
31             scanf("%d%d",&x,&y);
32             add(1,x);
33             add(-1,y+1);
34         }
35         else{
36             scanf("%d",&x);
37             printf("%d\n",ask(x));
38         }
39     }
40     
41     return 0;
42 }
AC

 

posted @ 2019-08-06 18:15  Simex  阅读(194)  评论(0编辑  收藏  举报