标签:and most memset str example more nsis meta next
描述
1 #include<stdio.h> 2 #include<string.h> 3 4 const int N=1e5+5; 5 6 int sum[N<<2],lazy[N<<2],ans; 7 8 void PushDown(int rt) 9 { 10 if(lazy[rt]) 11 { 12 lazy[rt<<1]=lazy[rt<<1|1]=lazy[rt]; 13 lazy[rt]=0; 14 } 15 } 16 void Update(int L,int R,int C,int l,int r,int rt) 17 { 18 if(L<=l&&r<=R) 19 { 20 lazy[rt]=C; 21 return; 22 } 23 int mid=(l+r)>>1; 24 PushDown(rt); 25 if(L<=mid)Update(L,R,C,l,mid,rt<<1); 26 if(R>mid)Update(L,R,C,mid+1,r,rt<<1|1); 27 } 28 void Query(int l,int r,int rt) 29 { 30 if(lazy[rt]==-1||lazy[rt]==1) 31 { 32 ans+=r-l+1; 33 return; 34 } 35 else if(lazy[rt]==2) 36 { 37 ans+=2*(r-l+1); 38 return; 39 } 40 else if(lazy[rt]==3) 41 { 42 ans+=3*(r-l+1); 43 return; 44 } 45 int mid=(l+r)>>1; 46 if(l<=mid)Query(l,mid,rt<<1); 47 if(r>mid)Query(mid+1,r,rt<<1|1); 48 } 49 int main() 50 { 51 int t,n,q,x,y,z,o=1; 52 scanf("%d",&t); 53 while(t--) 54 { 55 memset(lazy,-1,sizeof lazy); 56 scanf("%d%d",&n,&q); 57 for(int i=0;i<q;i++) 58 { 59 scanf("%d%d%d",&x,&y,&z); 60 Update(x,y,z,1,n,1); 61 } 62 ans=0; 63 Query(1,n,1); 64 printf("Case %d: The total value of the hook is %d.\n",o++,ans); 65 } 66 return 0; 67 }
标签:and most memset str example more nsis meta next
原文地址:https://www.cnblogs.com/taozi1115402474/p/9278923.html