题意:

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 ;
}

最新文章

  1. java集合类的学习(二)
  2. JQuery------$.getJSON()方法的使用
  3. UIView常见属性总结
  4. JS和JQuery总结
  5. Objective-C与C style语言的简单类比
  6. Magento控制器
  7. Python和Django在Windows上的环境搭建
  8. mariadb的select语句
  9. 物联网操作系统 - Contiki
  10. 《Hadoop权威》学习笔记五:MapReduce应用程序
  11. web.config中&lt;customErrors&gt;节点
  12. Asp.Net请求处理机制中IsApiRuntime解析
  13. ExtJs在disabled和readOnly美学分析
  14. 图片alpha blending的计算
  15. Ubuntu编译安装PHP7
  16. Hadoop中的一些基本操作
  17. jmeter - 关联之正则表达式提取器
  18. 深入学习Redis(2):持久化
  19. HNOI2019 苟命记
  20. 微信小程序之图片base64解码

热门文章

  1. Codeforces Round #622 (Div. 2)
  2. linux安装、使用优化、常用软件
  3. 【SSH】spring 整合 hibernate
  4. java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方法
  5. ILM --interface logic model
  6. linux 系统 grep 命令 摘录过滤特定的行
  7. python中,字符串前的u,b,r字符的含义
  8. VS2017项目中使用代码连接MySQL数据库,以及进行数据添加
  9. Windows Server 2012 R2 自动映射公共网络驱动器
  10. 安卓开发:在Mac系统中搭建安卓开发环境