【区间更新区间求和】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 ...
随机推荐
- 闹心的CSDN
近来搜索技术文章时,每次来到csdn上时,显示全文就提示登陆. 唉登陆就登陆吧,记不清账号了,就用手机号获取验证码.然后更改密码.我靠,密码居然要8位以上,要有大小写字母.数字和标点符号的组合... ...
- Fedora19添加和设置YUM源
Fedora19添加和设置YUM源添加yum源前先安装fastestmirror/downloadonly插件和axelget插件: 1.安装fastestmirror/downloadonly插件 ...
- com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 长时间没连接mysql断开了, ...
- BOM函数之history对象
前面的话 history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起.由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后 ...
- linux虚拟机安装值得注意的几点
1.建立新的虚拟机时选择自定义安装并选择稍后安装操作系统 2.关键安装命令 tar -xzvf VMwareTools-10.0.6-3595377.tar.gz sudo ./wmware-ins ...
- Bootstrap历练实例:表单控件大小
表单控件大小 您可以分别使用 class .input-lg 和 .col-lg-* 来设置表单的高度和宽度. 实例: <!DOCTYPE html><html><hea ...
- 【贪心优化dp决策】bzoj1571: [Usaco2009 Open]滑雪课Ski
还有贪心优化dp决策的操作…… Description Farmer John 想要带着 Bessie 一起在科罗拉多州一起滑雪.很不幸,Bessie滑雪技术并不精湛. Bessie了解到,在滑雪场里 ...
- input动态模糊查询的实现方式
最近在用jQuery实现动态模糊查询的时候,找了挺久都没有找到像Vue.js的watch属性这么好用的动态模糊查询方法.就分享一下目前遇到的坑和可以实现动态查询的几种方式. 1.jQuery的chan ...
- windows10系统下安装keras框架以theano为后端并配置gpu加速
在安装之前,请确保你的显卡是NVIDIA的,并且是以下型号,否则不能进行gpu加速,右键我的电脑--管理--设备管理器--显示适配器.另外如果你的电脑是windows7,安装教程也是一样的,不过根据k ...
- redis配置cluster分布式集群
#下载最新的redis5. wget http://download.redis.io/releases/redis-5.0.3.tar.gz .tar.gz cd redis- make make ...