Just a Hook-HDU1698 区间染色+区间查询
2024-09-06 12:50:15
题意:
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 ;
}
最新文章
- java集合类的学习(二)
- JQuery------$.getJSON()方法的使用
- UIView常见属性总结
- JS和JQuery总结
- Objective-C与C style语言的简单类比
- Magento控制器
- Python和Django在Windows上的环境搭建
- mariadb的select语句
- 物联网操作系统 - Contiki
- 《Hadoop权威》学习笔记五:MapReduce应用程序
- web.config中<;customErrors>;节点
- Asp.Net请求处理机制中IsApiRuntime解析
- ExtJs在disabled和readOnly美学分析
- 图片alpha blending的计算
- Ubuntu编译安装PHP7
- Hadoop中的一些基本操作
- jmeter - 关联之正则表达式提取器
- 深入学习Redis(2):持久化
- HNOI2019 苟命记
- 微信小程序之图片base64解码
热门文章
- Codeforces Round #622 (Div. 2)
- linux安装、使用优化、常用软件
- 【SSH】spring 整合 hibernate
- java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方法
- ILM --interface logic model
- linux 系统 grep 命令 摘录过滤特定的行
- python中,字符串前的u,b,r字符的含义
- VS2017项目中使用代码连接MySQL数据库,以及进行数据添加
- Windows Server 2012 R2 自动映射公共网络驱动器
- 安卓开发:在Mac系统中搭建安卓开发环境