题目链接

题意 : 一个有n段长的金属棍,开始都涂上铜,分段涂成别的,金的值是3,银的值是2,铜的值是1,然后问你最后这n段总共的值是多少。

思路 : 线段树的区间更新。可以理解为线段树成段更新的模板题。

 //HDU 1698
 #include <cstdio>
 #include <cstring>
 #include <iostream>

 using namespace std;

 ],p[] ;

 //lz延迟标记,每次更新不需要更新到底,使得更新延迟到下次更新或者查询的时候
 void pushdown(int rt,int m)
 {
     if(lz[rt])
     {
         lz[rt << ] = lz[rt] ;
         lz[rt <<  | ] = lz[rt] ;
         p[rt << ] = (m -( m >> )) * lz[rt] ;
         p[rt <<  | ] = (m>>) * lz[rt] ;
         lz[rt] =  ;
     }
 }
 void pushup(int rt) //  将左右孩子的值更新到自己
 {
     p[rt] = p[rt << ] + p[rt <<  | ] ;
 }

 void update(int L,int R,int l,int r,int sc,int rt)
 {
     if(l >= L && r <= R)
     {

         lz[rt] = sc ;
         p[rt] = (r-l+)*sc ;
         return ;
     }
     pushdown(rt,r-l+) ;
      ;
     if(m >= L)
         update(L,R,l,m,sc,rt << ) ;
     if(R > m)
         update(L,R,m+,r,sc,rt <<  | ) ;
     pushup(rt) ;
 }
 void build(int l,int r,int rt)
 {
     lz[rt] =  ;
     if(l == r)
     {
         p[rt] =  ;
         return ;
     }
      ;
     build(l,mid,rt << ) ;
     build(mid + ,r,rt <<  | ) ;
     pushup(rt) ;
 }
 int query(int L,int R,int l,int r,int rt)
 {
      ;
     if(L <= l && r <= R)
     {

         return p[rt] ;
     }
     pushdown(rt , r-l+) ;
      ;
     if(mid >= L)
     sum += query(L,R,l,mid,rt <<  )  ;
     if(mid < R)
     sum += query(L,R,mid+,r,rt <<  | ) ;
     return sum ;

 }
 int main()
 {
     int T,N,Q ;
     cin >> T ;
      ;
     while(T--)
     {
         int x,y,z ;
         cin >> N >> Q ;
         build(,N,) ;
         while(Q--)
         {
             cin >> x >> y >> z ;
             update(x,y,,N,z,) ;
         }
         ,N,,N,) ;
         cout<<"Case "<< casee ++ <<": The total value of the hook is "<<sum  <<"."<<endl ;
     }
      ;
 }

HDU 1698 Just a Hook (线段树区间更新)的更多相关文章

  1. (简单) HDU 1698 Just a Hook , 线段树+区间更新。

    Description: In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of ...

  2. HDU 1698 Just a Hook(线段树区间更新查询)

    描述 In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes ...

  3. HDU 1698 Just a Hook(线段树 区间替换)

    Just a Hook [题目链接]Just a Hook [题目类型]线段树 区间替换 &题解: 线段树 区间替换 和区间求和 模板题 只不过不需要查询 题里只问了全部区间的和,所以seg[ ...

  4. [HDU] 1698 Just a Hook [线段树区间替换]

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. HDU.1689 Just a Hook (线段树 区间替换 区间总和)

    HDU.1689 Just a Hook (线段树 区间替换 区间总和) 题意分析 一开始叶子节点均为1,操作为将[L,R]区间全部替换成C,求总区间[1,N]和 线段树维护区间和 . 建树的时候初始 ...

  6. HDU.1556 Color the ball (线段树 区间更新 单点查询)

    HDU.1556 Color the ball (线段树 区间更新 单点查询) 题意分析 注意一下pushdown 和 pushup 模板类的题还真不能自己套啊,手写一遍才行 代码总览 #includ ...

  7. HDU 1556 Color the ball(线段树区间更新)

    Color the ball 我真的该认真的复习一下以前没懂的知识了,今天看了一下线段树,以前只会用模板,现在看懂了之后,发现还有这么多巧妙的地方,好厉害啊 所以就应该尽量搞懂 弄明白每个知识点 [题 ...

  8. 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 ...

  9. HDU 1698 Just a Hook 线段树+lazy-target 区间刷新

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  10. HDU 1698 Just a Hook(线段树成段更新)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

随机推荐

  1. Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用(后续)

    在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]里面提到了Microsoft 身份认证,其实这也是一大块需要注意的地方,特作为后续补充这些知识点.上章是使用了Microsof ...

  2. JavaScript 写计算器改进版

    <html><head><style> .short{height:50px;width:55px;float:left;}</style></h ...

  3. jQuery的4种事件绑定方法

    jQuery中提供了四种绑定事件的方法,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off: 一.on()方法(首选方法) ...

  4. MongoDB管理工具的插件系统

    MongoDB管理工具  MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了. 最近准备着手插件系统的开发,简 ...

  5. cmd连接mysql连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加)

    MySQL导入导出命令1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc >wc ...

  6. 基于visual Studio2013解决面试题之0405和最大的子矩阵

     题目

  7. Python3.5爬虫统计AcFun所有视频,并按各个类别进行Top100排序展示

    前(b)言(b): 前段时间对Python产生了浓厚的兴趣,所以决定入门学习了1个多月,后来某时我需要对tomcat做一个压力测试,于是我想到了用Python写一个压力测试的脚本吧!最后捣鼓出了一个脚 ...

  8. ubuntu18.04安装安装JDK

    1.前提准备: 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2. ...

  9. Xamarin.Forms FlexLayout 布局扩展+ 模板扩展+弹性换行

    Binding a FlexLayout to a Collection   In May we published a doc on the new FlexLayout control that’ ...

  10. iOS保持待续连接

    当iphone应用程序进行网络编程时,切到后台后,socket连接会断掉,ios的设计就是这样. 但是好在apple公司也没有那么绝,还是有一些东西可以在后台运行的(backgroundmodes), ...