使用线段树更新每段区间的奖(1,2,3),最后在统计整段区间的数和,基本线段树,果断1A啊

#include<iostream>
#include<stdio.h>
using namespace std;
#define N 100000
struct node{
int l,r,p;
}a[N*4];
int n;
void build(int left,int right,int i){
a[i].l=left;
a[i].r=right;
a[i].p=1;
if(a[i].l==a[i].r){
return ;
}
int mid=(a[i].l+a[i].r)>>1;
build(left,mid,i*2);
build(mid+1,right,i*2+1);
// a[i].p=a[i*2].p+a[i*2+1].p;
}
void updata(int left,int right,int i,int p){
if(left==a[i].l&&a[i].r==right){
a[i].p=p;
return ;
}
if(a[i].p>=1){
a[i*2].p=a[i].p;
a[i*2+1].p=a[i].p;
a[i].p=-1;
}
int mid=(a[i].l+a[i].r)>>1;
if(mid>=right)
updata(left,right,i*2,p);
else if(mid<left)
updata(left,right,i*2+1,p);
else{
updata(left,mid,i*2,p);
updata(mid+1,right,i*2+1,p);
}
// a[i].p=a[i*2].p+a[i*2+1].p;
}
int ans=0;
void sum(int i){
// cout<<a[i].l<<" "<<a[i].r<<" "<<a[i].p<<endl;
if(a[i].p!=-1){
ans+=a[i].p*(a[i].r-a[i].l+1);
return ;
}
sum(i*2);
sum(i*2+1); }
int main(){
int t,s,x,y,z;
scanf("%d",&t);
int cou=1;
while(t--){
scanf("%d %d",&n,&s);
build(1,n,1);
while(s--){
scanf("%d%d%d",&x,&y,&z);
updata(x,y,1,z);
}
ans=0;
sum(1);
printf("Case %d: The total value of the hook is %d.\n",cou++,ans);
}
}

最新文章

  1. 做一个java项目要经过那些正规的步骤
  2. RFID-RC522、FM1702SL、M1卡初探
  3. 隐式调用 Intent 大全, 很全
  4. NBIbatis 微信框架
  5. UWP开发入门(十六)——常见的内存泄漏的原因
  6. C#的运算符重载
  7. centos 安装git server
  8. Ribbon 窗体的 MDI 子窗体使用 TabbedMDIManager 切换时工具条闪屏问题的解决办法
  9. 解决DropDownList 有一个无效 SelectedValue,因为它不在项目列表中。这是怎么回事?
  10. spring07 JDBC
  11. jquery判断表单提交是否为空
  12. PHPCMSV9上线方法及文件权限设置
  13. [0] 关于IComparable和IComparer接口和Comparer类
  14. C#工具:ASP.NET MVC生成图片验证码
  15. SQL Server GUID 数据迁移至MongoDB后怎样查看?
  16. Spring MVC请求流程
  17. 《高性能JavaScript》--读书笔记
  18. [PA2012] Tax
  19. D - GCD HDU - 1695 -模板-莫比乌斯容斥
  20. 不看好运维竖井产品模式,优云打造融合化运维PaaS平台

热门文章

  1. Java NIO Buffer说明
  2. 一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址
  3. B - Alyona and mex(构造)
  4. 多文件上传ajax jquery
  5. 5.26 idea生成javadoc
  6. vim的快捷键大全
  7. vue2.0模拟锚点实现定位平滑滚动
  8. Apex语言(七)集合
  9. java源码
  10. Scrapy处理200-300范围之外的响应代码