hdu 1698(线段树区间更新)
解题思路:线段树区间更新水题。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;const int maxn = 100005;
struct seg
{int l,r,sum,lazy;
}tree[maxn<<2];void build(int l,int r,int u)
{tree[u].l = l;tree[u].r = r;tree[u].lazy = 0;tree[u].sum = 0;if(l == r) return;int mid = (l + r) >> 1;build(l,mid,2*u);build(mid+1,r,2*u+1);
}void PushDown(int u)
{tree[2*u].sum = (tree[2*u].r - tree[2*u].l + 1) * tree[u].lazy;tree[2*u+1].sum = (tree[2*u+1].r - tree[2*u+1].l + 1) * tree[u].lazy;tree[2*u].lazy = tree[u].lazy;tree[2*u+1].lazy = tree[u].lazy;tree[u].lazy = 0;
}void PushUp(int u)
{tree[u].sum = tree[2*u].sum + tree[2*u+1].sum;
}void update(int l,int r,int u,int v)
{if(tree[u].l >= l && tree[u].r <= r){tree[u].sum = (tree[u].r - tree[u].l + 1) * v;tree[u].lazy = v;return;}if(tree[u].lazy) PushDown(u);int mid = (tree[u].l + tree[u].r) >> 1;if(l <= mid) update(l,r,u*2,v);if(r > mid) update(l,r,u*2+1,v);PushUp(u);
}int query(int l,int r,int u)
{if(tree[u].l >= l && tree[u].r <= r){return tree[u].sum;}int mid = (tree[u].l + tree[u].r) >> 1;int ans = 0;if(l <= mid) ans += query(l,r,2*u);if(r > mid) ans += query(l,r,2*u+1);return ans;
}int main()
{int t,cas = 1;scanf("%d",&t);while(t--){int n;scanf("%d",&n);build(1,n,1);for(int i = 1; i <= n; i++)update(i,i,1,1);int q,x,y,z;scanf("%d",&q);while(q--){scanf("%d%d%d",&x,&y,&z);update(x,y,1,z);}printf("Case %d: The total value of the hook is %d.\n",cas++,query(1,n,1));}return 0;
}
hdu 1698(线段树区间更新)相关推荐
- POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新
直接将这3题 放一起了 今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...
- hdu 3954(线段树区间更新)
转载标记处:http://www.cnblogs.com/wang-jue/articles/2920341.html 思路:这道题所得到的经验与每个英雄的等级有关,一般的可能就用线段树一直更新到每一 ...
- hdu 5124(线段树区间更新+lazy思想)
http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:区间覆盖次数问题. 解题思路:线段树水之. #include<iostream> #in ...
- hdu 5692 Snacks(dfs序+线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5692 解题思路:这道题是树节点的点权更新,而且涉及到子树,常用的思路是利用dfs序,用线段树来对区间进 ...
- hdu 3966(树链剖分+线段树区间更新)
传送门:Problem 3966 https://www.cnblogs.com/violet-acmer/p/9711441.html 学习资料: [1]线段树区间更新:https://blog.c ...
- Just a Hook(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 In the game of DotA, Pudge's meat hook is actual ...
- ZOJ 1610 Count the Colors (线段树区间更新)
题目链接 题意 : 一根木棍,长8000,然后分别在不同的区间涂上不同的颜色,问你最后能够看到多少颜色,然后每个颜色有多少段,颜色大小从头到尾输出. 思路 :线段树区间更新一下,然后标记一下,最后从头 ...
- hihoCoder 1080 : 更为复杂的买卖房屋姿势 线段树区间更新
#1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,"模拟都市"是他们非常喜欢的一个游戏 ...
- CodeForces - 272C Dima and Staircase (线段树区间更新)
题意: 见以下样例,给出 5 个区间,每个区间的高度已知.一共 4 次操作.每次操作都是从最左边开始向下垒一个宽为 w 高为h 的木块,过程见下图. 问每次垒木块的高度是多少? Input 5 1 2 ...
最新文章
- 掩码语言模型(Masked Language Model)mlm
- 【题解】Luogu P1533 可怜的狗狗
- 2017.8.31 机器学习各种算法
- OpenStack的部署T版(八)——Dashboard
- [控件] LabelView
- MySQL学习笔记_10_MySQL高级操作(下)
- 自定义标题栏右键菜单
- 产品运营:当你和上级发生争执你会怎么处理?
- 表单提交后打印后台传过来的数据
- 让应用通过苹果审核出人头地的10个方法
- win7/64位下python2.7、easy_install安装经验
- 喜马拉雅下载成mp3方法
- unity 字体width_Unity制作自定义字体的两种方法
- AD7124读写驱动
- python项目报告模板_python接口自动化(五)--接口测试用例和接口测试报告模板(详解)...
- 练习题58:接口练习1:用接口、多态、方法来实现:麻雀会飞 鹦鹉会飞 鸵鸟不会飞 企鹅不会飞 直升飞机会飞
- 安卓AndroidStudio设计计算器实现简单的计算
- 用excel做logistic回归分析_用Excel做回归分析的详细步骤
- l完整的计算机系统,一个完整的计算机系统包括
- ligo 原理_在LIGO的实验中,Ubuntu被用来检测引力波