hdu1698Just a Hook
来源:互联网 发布:linux远程秘密拷贝文件 编辑:程序博客网 时间:2024/05/09 01:23
线段树区间更新
菜鸟之伤 __int64!!!!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 100050;
struct Tree{
int l, r, setv, sum;
}tree[maxn<<2]; // ?
int n;
__int64 sumn;
void pushup(int id){
tree[id].sum = tree[id << 1].sum + tree[id << 1 | 1].sum;
}
void pushdown(int id){
if(tree[id].l >= tree[id].r)
return;
if(tree[id].setv){
tree[id<<1].setv = tree[id<<1|1].setv = tree[id].setv;
tree[id<<1].sum = (tree[id<<1].r-tree[id<<1].l+1)*tree[id].setv;
tree[id<<1|1].sum = (tree[id<<1|1].r-tree[id<<1|1].l+1)*tree[id].setv;
tree[id].setv = 0;
}
}
void build(int id, int l, int r){
tree[id].l = l;
tree[id].r = r;
tree[id].setv = 0;
if(tree[id].l == tree[id].r){
tree[id].sum = 1;
return ;
}
int mid = (l + r) >>1;
build(id << 1, l, mid);
build(id << 1 | 1, mid + 1, r);
pushup(id);
}
void query(int id, int l, int r){
if(tree[id].l >= l && tree[id].r <= r){
sumn += tree[id].sum;
return ;
}
pushdown(id);
int mid = ( tree[id].l + tree[id].r) >> 1;
if(l <= mid){
query(id<<1, l, r);
}
if(r > mid){
query(id<<1|1, l, r);
}
pushup(id);
}
void updateSet(int id,int l,int r,int val){
if(tree[id].l >= l && tree[id].r <= r){
tree[id].setv = val;
tree[id].sum = (tree[id].r-tree[id].l+1)*val;
return;
}
pushdown(id);
int mid = (tree[id].l+tree[id].r)>>1;
if(l <= mid)
updateSet(id<<1,l,r,val);
if(mid < r)
updateSet((id<<1)+1,l,r,val);
pushup(id);
}
int main(){
int t , q, x, y, z, num = 1;
scanf("%d", &t);
while(t--){
scanf("%d", &n);
build(1,1,n);
scanf("%d", &q);
while(q--){
scanf("%d%d%d", &x, &y, &z);
updateSet(1,x,y,z);
}
sumn = 0;
query(1,1,n);
printf("Case %d: The total value of the hook is %I64d.\n", num++, sumn);
}
return 0;
}
- hdu1698Just a Hook
- hdu1698Just a Hook segment_tree
- hdu1698Just a Hook
- hdu1698Just a Hook
- hdu1698Just a Hook
- HDU1698Just a Hook
- hdu1698just a hook 线段树
- hdu1698Just a Hook(线段树---成段更新)
- hdu1698Just a Hook(线段树区间更新)
- hdu1698Just a Hook 线段树 成段更新水题
- hdu1698Just a Hook(线段树+懒惰标记)
- hdu1698Just a Hook (线段树 成段更新,这题目真是坑,按题目意思开的数组还小)
- hdu1698 Just a Hook
- HDU1689 Just a Hook
- Just a Hook
- hdu Just a Hook
- hdu1698 Just a Hook
- hdu_1698_Just a Hook
- leetcode:Combination Sum
- java适配器模式
- 通过预加载器提升网页加载速度
- ognl.OgnlException: target is null for setProperty(null,"XXXX"...)
- 使用MyBatis Generator自动创建代码
- hdu1698Just a Hook
- 多线程之浅谈线程概念
- 配置
- Windows 10你准备好了吗?
- 【网络编程】之十二、wsaeventselect+线程池 服务器实现
- 2015 Multi-University Training Contest 10 (hdu 5406-5416)数据结构+dp+矩阵快速幂+bitset优化拓扑排序+(dp&树状数组)
- HiWork走访老朋友Todolist——土豆丝团队
- linux下布aps.net的项目
- myBatis学习笔记(10)——使用拦截器实现分页查询