Just a Hook-HDU1698 区间染色+区间查询
题意:
hook有一根长度为n的棒,可以将它看成有n段,一开始每段都是铜,hook可以选择一段区间改变棒的属性,
棒有三种属性:铜=1,银=2,金=3,最后输出棒每段的属性总和。
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698
思路:
区间染色+区间查询
代码:
- #include <bits/stdc++.h>
- using namespace std;
- const int MAXN=1e5+;
- typedef long long ll;
- int lazy[MAXN<<],tree[MAXN<<];
- void push_up(int node)
- {
- tree[node]=tree[node<<]+tree[node<<|];
- }
- void build(int node,int l,int r)
- {
- if(l==r)
- {
- tree[node]=;return ;
- }
- int mid=(l+r)>>;
- build(node<<,l,mid);
- build(node<<|,mid+,r);
- push_up(node);
- }
- void push_down(int node,int l,int r,int mid)
- {
- lazy[node<<]=lazy[node];
- lazy[node<<|]=lazy[node];
- tree[node<<]=lazy[node]*(mid-l+);
- tree[node<<|]=lazy[node]*(r-mid);
- lazy[node]=;
- }
- void update(int node,int l,int r,int x,int y,int z)
- {
- if(x<=l&&y>=r)
- {
- lazy[node]=z;
- tree[node]=(r-l+)*z;
- return;
- }
- int mid=(l+r)>>;
- if(lazy[node])push_down(node,l,r,mid);
- if(x<=mid)update(node<<,l,mid,x,y,z);
- if(y>mid)update(node<<|,mid+,r,x,y,z);
- push_up(node);
- }
- int query(int node,int l,int r,int x,int y)
- {
- if(x<=l&&y>=r)
- {
- return tree[node];
- }
- int ans=;
- int mid=(l+r)>>;
- if(lazy[node])push_down(node,l,r,mid);
- if(x<=mid)ans+=query(node<<,l,mid,x,y);
- if(y>mid)ans+=query(node<<|,mid+,r,x,y);
- return ans;
- }
- int main()
- {
- int t;scanf("%d",&t);int case_=;
- while(t--)
- {
- memset(lazy,,sizeof(lazy));
- int n;scanf("%d",&n);
- int q;scanf("%d",&q);
- build(,,n);
- while(q--)
- {
- int x,y,z;
- scanf("%d%d%d",&x,&y,&z);
- update(,,n,x,y,z);
- }
- printf("Case %d: The total value of the hook is %d.\n",++case_,query(,,n,,n));
- }
- return ;
- }
Just a Hook-HDU1698 区间染色+区间查询的更多相关文章
- POJ 2777.Count Color-线段树(区间染色+区间查询颜色数量二进制状态压缩)-若干年之前的一道题目。。。
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 53312 Accepted: 16050 Des ...
- HDU1698 Just a Hook —— 线段树 区间染色
题目链接:https://vjudge.net/problem/HDU-1698 In the game of DotA, Pudge’s meat hook is actually the most ...
- hdu1698线段树的区间更新区间查询
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- 线段树(区间树)之区间染色和4n推导过程
前言 线段树(区间树)是什么呢?有了二叉树.二分搜索树,线段树又是干什么的呢?最经典的线段树问题:区间染色:正如它的名字而言,主要解决区间的问题 一.线段树说明 1.什么是线段树? 线段树首先是二叉树 ...
- POJ 1436 (线段树 区间染色) Horizontally Visible Segments
这道题做了快两天了.首先就是按照这些竖直线段的横坐标进行从左到右排序. 将线段的端点投影到y轴上,线段树所维护的信息就是y轴区间内被哪条线段所覆盖. 对于一条线段来说,先查询和它能相连的所有线段,并加 ...
- POJ-2777 Count Color(线段树,区间染色问题)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40510 Accepted: 12215 Descrip ...
- 1082 线段树练习 3 && 树状数组区间修改区间查询
1082 线段树练习 3 题意: 给定序列初值, 要求支持区间修改, 区间查询 Solution 用树状数组, 代码量小, 空间占用小 巧用增量数组, 修改时在 \(l\) 处 $ + val$ , ...
- 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询
题目描述 JYY有N个平面坐标系中的矩形.每一个矩形的底边都平行于X轴,侧边平行于Y轴.第i个矩形的左下角坐标为(Xi,Yi),底边长为Ai,侧边长为Bi.现在JYY打算从这N个矩形中,随机选出两个不 ...
- POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化)
POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化) 题意分析 贴海报,新的海报能覆盖在旧的海报上面,最后贴完了,求问能看见几张海报. 最多有10000张海报,海报 ...
随机推荐
- 无法创建“System.Object”类型的常量值。此上下文仅支持基元类型或枚举类型
Entity FreamWork 无法创建“System.Object”类型的常量值.此上下文仅支持基元类型或枚举类型错误解决: 最近在开发中把我原来抄的架构里面的主键由固定的Guid改成了可以泛型指 ...
- 排序算法之归并排序的python实现
采用分治法: 分割:递归地把当前序列平均分割成两半. 集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并). 归并操作(归并算法),指的是将两个已经排序的序列合并成一个序列的操作.归并排序 ...
- 原生js浏览器兼容性问题
1.HTML对象获取问题 FireFox:document.getElementById(“idName”); ie:document.idname或者document.getElementById( ...
- HGAME 2020 misc
week1 每日推荐 拿到Wireshark capture file后,按常规思路,用foremost命令拿到一个加密的压缩包,之后文件->导出对象->http,看到最大的一个文件里面最 ...
- 新手学习arm的建议
本文来自:chen4013874的博客 如果您是ARM初学者或者以前是51单片机应用开发工程师,想快速进入32位ARM嵌入式开发领域,建议您阅读本文档.本文档是我们结合多年ARM开发经验,针对初学者对 ...
- nginx 解决 connect() failed (111: Connection refused) while connecting to upstream,
嗯哼,刚装了个ubuntu的lnmp,我的天啊,踩的坑比我脂肪还多了 比如刚装完的时候访问显示502, 也不知道什么问题,就去看了一下nginx日志 /var/log/nginx/error.log ...
- SQL语句,pymysql模块,sql注入问题
一.完整版SQL语句的查询 select distinct post,avg(salary) from table where id > 1 group by post` having avg( ...
- Linux格式化数据盘
一块全新的数据盘挂载到ECS实例后,您必须创建并挂载至少一个文件系统.本示例使用I/O优化实例,操作系统为CentOS 7.6,为一块新的20GiB数据盘(设备名为/dev/vdb)创建一个MBR ...
- Yii2.0 引入外部js css
<script src="<?= Yii::$app->request->baseUrl . '/js/jquery-2.1.1.min.js'?>" ...
- dateadd()日期加法运算