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 }