#include<bits/stdc++.h>
using namespace std;
int s[400005],lazy[400005];
void pushdown(int id,int l,int r){
int mid=(l+r)/2;
int ls=id*2,rs=id*2+1;
lazy[ls]=lazy[rs]=lazy[id];
s[ls]=(mid-l+1)*lazy[ls];
s[rs]=(r-mid)*lazy[rs];
lazy[id]=0;
}
void build(int id,int ll,int rr){
lazy[id]=0;
if(ll==rr){
s[id]=1;
return;
}
int mid=(ll+rr)/2;
build(id*2,ll,mid);
build(id*2+1,mid+1,rr);
s[id]=s[id*2]+s[id*2+1];
}
void updata(int id,int ll,int rr,int l,int r,int v){
if(l<=ll&rr<=r){
lazy[id]=v;
s[id]=(rr-ll+1)*v;
return;
}
if(lazy[id])
pushdown(id,ll,rr);
int mid=(ll+rr)/2;
if(r<=mid)
updata(id*2,ll,mid,l,r,v);
else if(l>mid)
updata(id*2+1,mid+1,rr,l,r,v);
else{
updata(id*2,ll,mid,l,r,v);
updata(id*2+1,mid+1,rr,l,r,v);
}
s[id]=s[id*2]+s[id*2+1];
}
int main(){
int t;
scanf("%d",&t);
for(int i=1;i<=t;i++){
int n,m;
scanf("%d%d",&n,&m);
build(1,1,n);
while(m--){
int l,r,x;
scanf("%d%d%d",&l,&r,&x);
updata(1,1,n,l,r,x);
}
printf("Case %d: The total value of the hook is %d.\n",i,s[1]);
}
return 0;
}
HDU - 1698 Just a Hook
最新推荐文章于 2022-04-01 12:15:40 发布