题意:t组数据,给一个n。m表示n长度的钩和m次操作。初始钩子的每单位长度的价值为1,接下来输入 x,y,k 的操作把钩子[x,y]区间的价值替换为k,求m次操作后钩子的价值为多少



分析:成段替换。最后仅仅要求第一个区间就能够了,使用不用写query询问



代码:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <queue>
  5. #include <algorithm>
  6. #include<vector>
  7. #pragma comment(linker,"/STACK:1024000000,1024000000")
  8. using namespace std;
  9. const int maxn = 1e5+5;
  10. int sum[maxn*4];
  11. int lazy[maxn*4];
  12. void up(int rt){
  13. sum[rt]=sum[rt<<1]+sum[rt<<1|1];
  14. }
  15. void down(int l,int r,int rt){
  16. if(!lazy[rt]) return;
  17. int mid=(l+r)>>1;
  18. lazy[rt<<1]=lazy[rt];lazy[rt<<1|1]=lazy[rt];
  19. sum[rt<<1]=lazy[rt]*(mid-l+1);
  20. sum[rt<<1|1]=lazy[rt]*(r-mid);
  21. lazy[rt]=0;
  22. }
  23. void build(int l,int r,int rt){
  24. sum[rt]=lazy[rt]=0;
  25. if(l==r){
  26. sum[rt]=1;
  27. return;
  28. }
  29. int mid=(l+r)>>1;
  30. build(l,mid,rt<<1);
  31. build(mid+1,r,rt<<1|1);
  32. up(rt);
  33. }
  34. void update(int L,int R,int k,int l,int r,int rt){
  35. if(L<=l&&r<=R){
  36. sum[rt]=k*(r-l+1);
  37. lazy[rt]=k;
  38. return;
  39. }
  40. down(l,r,rt);
  41. int mid=(l+r)>>1;
  42. if(L<=mid) update(L,R,k,l,mid,rt<<1);
  43. if(R>mid) update(L,R,k,mid+1,r,rt<<1|1);
  44. up(rt);
  45. }
  46. int main()
  47. {
  48. int t;
  49. scanf("%d",&t);
  50. for(int cas=1;cas<=t;cas++){
  51. int n,m;
  52. scanf("%d%d",&n,&m);
  53. build(1,n,1);
  54. while(m--){
  55. int x,y,k;
  56. scanf("%d%d%d",&x,&y,&k);
  57. update(x,y,k,1,n,1);
  58. }
  59. printf("Case %d: The total value of the hook is %d.\n",cas,sum[1]);
  60. }
  61. }

线段树专题—HDU1698 Just a Hook的更多相关文章

  1. zkw线段树专题

    题目来自大神博客的线段树专题 http://www.notonlysuccess.com/index.php/segment-tree-complete/ hdu1166 敌兵布阵题意:O(-1)思路 ...

  2. vj线段树专题

    vj线段树专题题解 单点更新模板 void build(int x,int l,int r){//sum[x]控制l-r区域 if(l==r){Sum[x]=num[l];return ;} int ...

  3. Kuangbin 带你飞-线段树专题 题解

    HDU 1166 敌兵布阵 单调更新区间查询和 #include <map> #include <set> #include <list> #include < ...

  4. 2018 UESTC 线段树专题

    A - 一棵简单的线段树 A[1...n]初始全为0. 1. 给两个数p 和 x(1≤p≤n),单点更新 A[p] <- x 2. 给两个数L和R (1≤L<R≤n),  L到R区间里这几 ...

  5. 线段树专题—ZOJ1610 Count the Colors

    题意:给一个n,代表n次操作,接下来每次操作表示把[l.r]区间的线段涂成k的颜色当中,l,r,k的范围都是0到8000 分析:事实上就是拿线段树维护一段区间的颜色,整体用到的是线段树的区间更新把,可 ...

  6. 线段树专题 POJ3468 A Simple Problem with Integers

    题意:n个点.m个操作.两种操作类型.C X Y K 表示区间[x,y]上每一个点值加k.Q X Y 求区间[x,y]的和 分析:线段树区间求和,裸模板 注意:结果会超int,要用long long ...

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

    有m个操作,每个操作 X Y Z是将区间[X, Y]中的所有的数全部变为Z,最后询问整个区间所有数之和是多少. 区间更新有一个懒惰标记,set[o] = v,表示这个区间所有的数都是v,只有这个区间被 ...

  8. 线段树专题—ZOJ1610 Count the Colors(涂区间,直接tag标记)

    Painting some colored segments on a line, some previously painted segments may be covered by some th ...

  9. 线段树专题2-(加强版线段树-可持续化线段树)主席树 orz! ------用于解决区间第k大的问题----xdoj-1216

    poj-2104(区间第K大问题) #include <iostream> #include <algorithm> #include <cstdio> #incl ...

随机推荐

  1. Android Developer -- Bluetooth篇 概述

    Bluetooth 安卓平台支持蓝牙网络协议栈,它允许设备与其他蓝牙设备进行无线交换数据.应用程序框架通过安卓蓝牙APIs提供访问蓝牙功能.这些APIs使应用程序通过无线连接到其他蓝牙设备,使点对点和 ...

  2. Handler嵌套--可以

    package com.example.handlernestdemo; import android.support.v7.app.ActionBarActivity; import android ...

  3. MySQL索引,MySQL中索引的限制?

    MySQL中索引的限制: 1.MyISAM存储引擎引键的长度综合不能超过1000字节: 2.BLOB和TEXT类型的列只能创建前缀索引: 3.MySQL目前不支持函数索引: 4.使用!= 或者< ...

  4. 【转】蘑菇街面试经历(已拿到offer)

    最近正好接到了蘑菇街的面试通知,顿时很欣喜,还在等通知,不知结果如何. 首先安排了一次电话面试,大体内容时现在工作的一个状态,主要负责的项目功能,模块,以及架构例如,高并发网站优化,负载均衡等等,还会 ...

  5. kubernetes1.5.2--部署dashboard服务

    本文基于kubernetes 1.5.2版本编写 使用http方式访问api server的部署 cat dashboard-controller.yaml apiVersion: extension ...

  6. linux下rar包的解压方法

    linux下rar包的解压方法 学习了:https://blog.csdn.net/yonggeit/article/details/72190246?utm_source=itdadao&u ...

  7. java 中文转Unicode 以及 Unicode转中文

    package com.sun; public class Snippet {    public static void main(String[] args) {        String cn ...

  8. Angular 学习笔记——自定义标签

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  9. ejs - 初试

    官方API: https://www.npmjs.com/package/ejs - 模板引擎 ejs文件(和普通html文件没什么区别,只是多增加了变量) <!DOCTYPE html> ...

  10. htmlspecialchars_decode

    htmlspecialchars_decode   htmlspecialchars_decode - 将特殊的 HTML 实体转换回普通字符 htmlspecialchars - 将特殊字符转换为 ...