hdu1698 Just a Hook

题目其实是比较基础的线段树区间更新题。然后要注意的是,make树的时候,lazy tag要记得归0(因为个人习惯是在初始化的时候直接把lazy tag=0初始化,因此,如果有多组数据,只是这样做而不在make的时候进行初始化就会有错误。)

#include <bits/stdc++.h>using namespace std;
using ll = long long;const int MAXN = 1e5+10;
struct node
{int l, r;ll sum; ll tag;node(){this->tag = 0;}
};vector<node> tree(MAXN << 2);
ll query(int idx);
void update(int idx, int l, int r, ll v);
void pushDown(int idx);
void make(int idx, int l, int r);
void pushUp(int idx);signed main(){int T; int N; int Q;int l, r;ll v;scanf("%d", &T);for(int ca = 1; ca <= T; ca++){scanf("%d", &N); scanf("%d", &Q);make(1, 1, N);for(int i = 0; i < Q; i++){scanf("%d %d %lld", &l, &r, &v);update(1, l, r, v);}ll ans = query(1);printf("Case %d: The total value of the hook is %lld.\n",ca, ans);}return 0;
}ll query(int idx){return tree[idx].sum;
}void update(int idx, int l, int r, ll v){if(tree[idx].l >=l && tree[idx].r <= r){tree[idx].sum = ll(tree[idx].r - tree[idx].l + 1)*v; tree[idx].tag = v;return;}if(tree[idx].tag != 0) pushDown(idx);int mid = (tree[idx].l + tree[idx].r) / 2;if(l <=mid) update(idx << 1, l, r, v);if(r > mid) update(idx << 1 |1, l, r, v);pushUp(idx);
}void pushDown(int idx){int tag = tree[idx].tag; tree[idx].tag = 0;tree[idx << 1].tag =  tag;tree[idx << 1].sum = ll(tree[idx <<1]. r - tree[idx<<1].l + 1)*tag;tree[idx << 1|1].tag =  tag;tree[idx << 1|1].sum = ll(tree[idx <<1|1]. r - tree[idx<<1|1].l + 1)*tag;return;
}void make(int idx, int l, int r){if(l == r) {tree[idx].l = l; tree[idx].r = r; tree[idx].tag = 0;tree[idx].sum = 1; return;}int mid = (l + r) >> 1;make(idx << 1, l, mid);make(idx << 1 |1, mid+1, r);tree[idx].l = l; tree[idx].r = r; tree[idx].tag = 0;pushUp(idx);
}void pushUp(int idx){tree[idx].sum = tree[idx << 1].sum + tree[idx <<1 |1].sum;return;
}

hyu 1698 Just a Hook相关推荐

  1. 线段树专辑——hdu 1698 Just a Hook

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 这是一个区间染色的问题,对于区间染色问题,通常的方法是在线段树中定义一个cover域,当cover的值为- ...

  2. hdu 1698 Just a Hook 线段树区间更新

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 Let us number the consecutive metallic sticks of ...

  3. hdu 1698 Just a Hook(线段树区间更新·经典)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1698 数据:case,n,q,q行x,y,z.在长度为n的hook上进行q次区间更新,把它们的价值改变.最 ...

  4. HDU 1698 Just a Hook 线段树

    区间更新中 lazy标记的pushdown操作 风格还是傻崽的...感觉很好用... /********************* Template ************************/ ...

  5. hdu 1698 Just a Hook(线段树区间修改)

    传送门:Just a Hook Problem Description In the game of DotA, Pudge's meat hook is actually the most horr ...

  6. HDOJ 1698 Just a Hook(线段树成段更新)

    题意: 屠夫的钩子区间是1~n,每段可能由铜,银,金组成,价值分别为1,2,3,进行一系列的更新之后,求钩子的总价值. 思路: 线段树的成段更新:要设置一个临时的线段树,每次更新的时候把更新段的值放在 ...

  7. HDU 1698 Just a Hook (线段树区间修改+区间查询)

    题目链接: 传送门 题意:Pudge对装备钩子进行若干次的强化,强化分为三种分别对应的价值是1,2,3,在经历过若干次操作后,输出钩子对应的总价值,每次强化都是对钩子进行区间修改 解题思路:在明白了题 ...

  8. HDU 1698 Just a Hook(线段树区间更新)

    题意: 屠夫是Dota中一个令所有英雄闻风丧胆的英雄.他有一个很长的钩子,这个钩子是用铜做的(刚刚开始都是1),现在他想要更改这些钩子,把某个区间的钩子改为金.银或铜. 输入 L, R, X 表示把 ...

  9. 转给身边工程师:环形穿梭车控制系统设计细节来了!

    导语 大家好,我是智能仓储物流技术研习社的社长,老K.穿梭车在自动化仓储系统中有大量的应用案例,其中尤其以环形穿梭车的复杂程度为最.今天来给大家分享一则环形穿梭车控制系统的项目实例. 查看全文 htt ...

最新文章

  1. 【android】android中activity的生命周期
  2. oracle基本概念和术语
  3. Linux 常用命令全称,看看你 get 到了哪些?
  4. nmon安装为什么重启mysql_Nmon的安装及使用
  5. 计算机主机中网卡的作用,计算机硬件组成及作用
  6. 2019-03-28 SQL Server Pivot
  7. React中的组件通信——父传子、子传父、Context
  8. 如何将原图和json融合_用 base64 进行图片和字符串互转,并保存至 json
  9. CRUD 还能这么玩?
  10. 华为机试HJ38:求小球落地5次后所经历的路程和第5次反弹的高度
  11. php短信验证码的前台代码怎么写,php短信验证码接口代码示例
  12. 李广难封--有感于团队建设
  13. 9.2 iptables主机防火墙
  14. 面试送命题,你为什么从上家公司离职?
  15. 第 8 篇、Linux C 基础 | 运算符
  16. 2122 还原原数组(枚举,双指针)
  17. pyqt5做一个工具箱
  18. php生成动态笔画字体,怎么制作手写文字的动画效果视频 文字一笔一划写出来的动画效果制作...
  19. linux 备份iphone,备份苹果硬盘的数据
  20. 【环信IM集成指南】Web端常见问题整理

热门文章

  1. Linux查看实时网速的Shell
  2. java version 1.8下载_JDK1.8下载、安装和环境配置教程
  3. Tomcat使用过滤器实现页面的限制访问,登录才能访问受限页面
  4. 【Sprint3冲刺之前】敏捷团队绩效考核(刘铸辉)
  5. flowable 查询完成的流程_flowable中终止流程(一)
  6. SwiftUI应用开屏广告界面项目(一)
  7. 【小工具类】将一个十进制数转化成二进制/四进制/八进制/16进制
  8. python电话号码对应的字符组合_Python3 两种方式查找字符串里的电话号码
  9. ROS系统MoveIt玩转双臂机器人系列(三)--利用controller控制实际机器人
  10. 小白学 Python 爬虫(13):urllib 基础使用(三)