标签:ace name str nbsp names namespace color oid 数组
题意:给定一个初始数组b和一个初始值全部为0的数组a,每次操作可以在给定的区间(l,r)内让a[i](l=<i<=r)加一,或者查询区间区间(l,r)中a[i]/b[i](l=<i<=r)(取整)的和。
可以知道,$\sum_{\frac{a_i}{b_i}}\le nlogn$,所以我们只要暴力找到需要修改的位置修改即可。。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define M 100010 5 #define ls node<<1 6 #define rs node<<1|1 7 using namespace std; 8 int n,q; 9 int maxn[M<<2],minn[M<<2],cnt[M<<2],tag[M<<2],b[M]; 10 11 void update(int node) 12 { 13 minn[node]=min(minn[ls],minn[rs]); 14 cnt[node]=cnt[ls]+cnt[rs]; 15 maxn[node]=max(maxn[ls],maxn[rs]); 16 } 17 18 void build(int node,int l,int r) 19 { 20 if(l==r) {minn[node]=b[l];return;} 21 int mid=(l+r)/2; 22 build(ls,l,mid); 23 build(rs,mid+1,r); 24 update(node); 25 } 26 27 void push(int node) 28 { 29 if(tag[node]) 30 { 31 maxn[ls]+=tag[node]; 32 maxn[rs]+=tag[node]; 33 tag[ls]+=tag[node]; 34 tag[rs]+=tag[node]; 35 tag[node]=0; 36 } 37 } 38 39 void change(int node,int l,int r,int l1,int r1) 40 { 41 if(l1<=l&&r1>=r) 42 { 43 maxn[node]++; 44 if(maxn[node]<minn[node]) 45 { 46 tag[node]++; 47 return; 48 } 49 if(l==r&&maxn[node]>=minn[node]) 50 { 51 cnt[node]++; 52 minn[node]+=b[l]; 53 return; 54 } 55 } 56 int mid=(l+r)/2;push(node); 57 if(l1<=mid) change(ls,l,mid,l1,r1); 58 if(r1>mid) change(rs,mid+1,r,l1,r1); 59 update(node); 60 } 61 62 int query(int node,int l,int r,int l1,int r1) 63 { 64 if(l1<=l&&r1>=r) return cnt[node]; 65 int mid=(l+r)/2; push(node); 66 int ans=0; 67 if(l1<=mid) ans+=query(ls,l,mid,l1,r1); 68 if(r1>mid) ans+=query(rs,mid+1,r,l1,r1); 69 return ans; 70 } 71 72 int main() 73 { 74 while(~scanf("%d%d",&n,&q)) 75 { 76 memset(maxn,0,sizeof(maxn)); 77 memset(minn,0,sizeof(minn)); 78 memset(cnt,0,sizeof(cnt)); 79 memset(tag,0,sizeof(tag)); 80 for(int i=1;i<=n;i++) scanf("%d",&b[i]); 81 build(1,1,n); 82 while(q--) 83 { 84 int l,r;char s[10]; 85 scanf("%s%d%d",s,&l,&r); 86 if(s[0]==‘a‘) change(1,1,n,l,r); 87 else printf("%d\n",query(1,1,n,l,r)); 88 } 89 } 90 return 0; 91 }
标签:ace name str nbsp names namespace color oid 数组
原文地址:https://www.cnblogs.com/Slrslr/p/9737714.html