【区间更新区间求和】HDU 1698 Just a Hook
acm.hdu.edu.cn/showproblem.php?pid=1698
【AC】
#include<cstdio>
const int maxn=;
#define lson (i<<1)
#define rson (i<<1|1)
struct Seg
{
int l,r,lazy,val;
}tree[maxn<<];
int val[maxn]; void push_up(int i)
{
tree[i].val=tree[lson].val+tree[rson].val;
} void push_down(int i)
{
if (tree[i].lazy==-) return;
tree[lson].lazy=tree[i].lazy;
tree[rson].lazy=tree[i].lazy;
tree[lson].val=tree[i].lazy*(tree[lson].r-tree[lson].l+);
tree[rson].val=tree[i].lazy*(tree[rson].r-tree[rson].l+);
tree[i].lazy=-;
} void build(int l,int r,int i=) //build a segment tree of length n, and index 1..n
{
tree[i].l=l;
tree[i].r=r;
tree[i].lazy=-;
if (l==r) tree[i].val=val[l];
else
{
int mid=l+r>>;
build(l,mid,lson);
build(mid+,r,rson);
push_up(i);
}
} void setval(int l,int r,int x,int i=)
{
if (tree[i].l==l && tree[i].r==r)
{
tree[i].lazy=x;
tree[i].val=x*(r-l+);
}
else
{
push_down(i);
int mid=tree[i].l+tree[i].r>>;
if (r<=mid) setval(l,r,x,lson);
else if (l>mid) setval(l,r,x,rson);
else
{
setval(l,mid,x,lson);
setval(mid+,r,x,rson);
}
push_up(i);
}
} int query(int l,int r,int i=)
{
if (tree[i].l==l && r==tree[i].r) return tree[i].val;
push_down(i);
int mid=tree[i].l+tree[i].r>>;
if (r<=mid) return query(l,r,lson);
if (l>mid) return query(l,r,rson);
return query(l,mid,lson)+query(mid+,r,rson);
} int main()
{
int t;
scanf("%d",&t);
int cas=;
while (t--)
{
int n;
scanf("%d",&n);
for (int i=;i<=n;i++) val[i]=;
build(,n);
int m;
scanf("%d",&m);
for (int i=;i<m;i++)
{
int l,r,k;
scanf("%d%d%d",&l,&r,&k);
setval(l,r,k);
}
printf("Case %d: The total value of the hook is %d.\n",++cas,query(,n));
}
return ;
}
【区间更新区间求和】HDU 1698 Just a Hook的更多相关文章
- hdu 1698 线段树 区间更新 区间求和
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- poj3468(线段树区间更新&区间求和模板)
题目链接: http://poj.org/problem?id=3468 题意: 输入 n, m表初始有 n 个数, 接下来 m 行输入, Q x y 表示询问区间 [x, y]的和: C x y z ...
- hdu6070(分数规划/二分+线段树区间更新,区间最值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6070 题意: 给出一个题目提交序列, 从中选出一个正确率最小的子串. 选中的子串中每个题目当且仅当最 ...
- HDU 1698 Just a Hook(线段树模板之区间替换更新,区间求和查询)
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 1698 Just a Hook (线段树区间更新)
题目链接 题意 : 一个有n段长的金属棍,开始都涂上铜,分段涂成别的,金的值是3,银的值是2,铜的值是1,然后问你最后这n段总共的值是多少. 思路 : 线段树的区间更新.可以理解为线段树成段更新的模板 ...
- HDU 1698 just a hook 线段树,区间定值,求和
Just a Hook Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1 ...
- HDU 1698 Just a Hook(线段树:区间更新)
http://acm.hdu.edu.cn/showproblem.php?pid=1698 题意:给出1~n的数,每个数初始为1,每次改变[a,b]的值,最后求1~n的值之和. 思路: 区间更新题目 ...
- HDU 1698——Just a Hook——————【线段树区间替换、区间求和】
Just a Hook Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- 暑期训练狂刷系列——Hdu 1698 Just a Hook (线段树区间更新)
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1698 题目大意: 有一个钩子有n条棍子组成,棍子有铜银金三种组成,价值分别为1,2,3.为了对付每场 ...
- HDU 1698 Just a Hook(线段树/区间更新)
题目链接: 传送门 Minimum Inversion Number Time Limit: 1000MS Memory Limit: 32768 K Description In the g ...
随机推荐
- Mybatis配置多数据源
一. Spring配置多数据源 二. Spring配置数据源 三. MultipleDataSource的实现 1: package com.wbl.modal; 2: 3: import org. ...
- 风格附加css
#header #blogTitle { background: url("http://images.cnblogs.com/cnblogs_com/aiwuxia/1249780/o_1 ...
- shell脚本,计算输入给定的数,判断最大值,最小值,总和?
[root@localhost ~]# cat five.sh #!/bin/bash #任意输入5个数,判断最大值,最小值,总和 s= read -p "please input:&quo ...
- shell脚本,计算从0+2+4+6+....100的结果是多少?
[root@localhost wyb]# cat evenjia.sh #!/bin/bash #从0++++...100的结果 i= ` do sum=$(($sum+i)) i=$(($i+)) ...
- [LUOGU] 1002 过河卒
题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过 ...
- HTML 文件类表单元素如何限制上传类型,Accept属性设置
需求描述:简单的控制file的选择类型 解决方法:使用HTML input file 的accept属性控制 实例: <form action="demo_form.asp" ...
- 【php】关于尾部去除和分号问题
One thing to remember is, if you decide to omit the closing PHP tag, then the last line of the file ...
- R语言基础-list matrix array
列表可以包含多种类型,如数字/字符/向量/data.frame/list # 创建含一个向量元素的list list1 = list(c(1,2,3)) # list2有三个元素 list2 = li ...
- [转]ARM平台下独占访问指令LDREX和STREX
参考:ARM平台下独占访问指令LDREX和STREX的原理与使用详解 全文转载如下: 为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁.为了实现所谓 ...
- 杭电 5773 The All-purpose Zero
Description ?? gets an sequence S with n intergers(0 < n <= 100000,0<= S[i] <= 1000000). ...