kb-07线段树-05-区间整体修改查询;(水)
2024-09-06 21:06:12
/* */
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct P
{
int l,r,value;
int add;
}tr[];
void Pushup(int rt)
{
tr[rt].value=tr[rt<<].value+tr[rt<<|].value;
}
void build(int rt,int l,int r)
{
tr[rt].l=l;
tr[rt].r=r;
tr[rt].add=;
if(l==r)
{
tr[rt].value=;
return ;
}
int mid=(l+r)/;
build(rt<<,l,mid);
build(rt<<|,mid+,r);
Pushup(rt);
}
/*
区间修改,整体改成一个数,所以只需要记录这个数就可以了,区间的和可以用这个数乘以区间长度来求;
*/
void Pushdown(int rt)
{
if(tr[rt].add<=)
return ;
tr[rt<<].value=tr[rt].add*(tr[rt<<].r-tr[rt<<].l+);
tr[rt<<|].value=tr[rt].add*(tr[rt<<|].r-tr[rt<<|].l+);
tr[rt<<].add=tr[rt].add;
tr[rt<<|].add=tr[rt].add;
tr[rt].add=;
}
void Update(int rt,int l,int r,int begin,int end,int x)
{
if(begin<=l&&end>=r)
{
tr[rt].add=x;
tr[rt].value=x*(r-l+);//把区间更新成x
return ;
}
Pushdown(rt);
if(begin <=tr[rt<<].r)
{
Update(rt<<,l,tr[rt<<].r,begin,end,x);
}
if(end >=tr[rt<<|].l)
{
Update(rt<<|,tr[rt<<|].l,r,begin,end,x);
}
Pushup(rt);//区间下面的值发生变化,所以要pushup }
int main()
{
int T,k=;
scanf("%d",&T);
while(T--)
{
int n,q;
scanf("%d%d",&n,&q);
memset(tr,,sizeof(tr));
build(,,n);
for(int i=;i<q;i++)
{
int ll,rr,v;
scanf("%d%d%d",&ll,&rr,&v);
Update(,,n,ll,rr,v);
// for(int j=1;j<=25;j++)
// printf("%d:%d\n",j,tr[j].value);
}
int ans=tr[].value;
printf("Case %d: The total value of the hook is %d.\n",k++,ans);
}
return ;
}
最新文章
- 最快让你上手ReactiveCocoa之进阶篇
- SQL having 子句
- My roadway of compilers principles.
- 平衡二叉树,AVL树之图解篇
- PHP中的数组(一)
- jquery数字验证大小比较
- PHP memcache实现消息队列实例
- 推荐几款主流的Css Reset
- 获取bing图片并自动设置为电脑桌面背景(C++完整开源程序)
- 【 DCOS 】织云 CMDB 管理引擎技术详解
- ES6 new syntax of let and const (one)
- linux中一些简便的命令之sort
- URL https://i.cnblogs.com/EditPosts.aspx?opt=1
- 洛谷P4178 Tree (算竞进阶习题)
- PATH环境变量
- Java项目引用外部jar包时,使用bat启动
- Android SO动态调试之IDA
- Python相关在线文档手册地址
- 前端性能优化:Add Expires headers
- C# DataTable按指定列排序
热门文章
- SAP Cloud for Customer的Account Team里的role如何配置
- Spark Job调优(Part 2)
- Sublime +Markdown+OmniMarkupPreviewer 搭建实时预览的markdown编辑器
- 《队长说得队》第八次团队作业Alpha冲刺
- Dojo中的选择器
- Bootstrap历练实例:默认的列表组
- drf 频率组件 META字典详情
- python入门学习笔记1:Python与C的简单区别
- urllib、requests库整理
- 基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)