Just a Hook

【题目链接】Just a Hook

【题目类型】线段树 区间替换

&题解:

线段树 区间替换 和区间求和 模板题 只不过不需要查询 题里只问了全部区间的和,所以seg[1] 就是answer

【时间复杂度】\(O(nlogn)\)

&代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 9 ;
int n,q,x,y,z;
int seg[maxn<<2];
int sign[maxn<<2];
void PushUp(int rt)
{
seg[rt]=seg[rt<<1]+seg[rt<<1|1];
}
void PushDown(int len,int rt)
{
if (sign[rt]){
sign[rt<<1]=sign[rt];
sign[rt<<1|1]=sign[rt];
//左儿子元素多 右儿子元素少 因为与m的求法有关
//我的求法是 b+e>>1 左是[b,m] 右是[m+1,e] 所以奇数的时候是左儿子多
seg[rt<<1]=sign[rt]*(len-len/2);
seg[rt<<1|1]=sign[rt]*(len/2);
sign[rt]=0;
}
}
void Build(int b,int e,int rt)
{
if (b==e){
seg[rt]=1;
return ;
}
int m=b+e>>1;
Build(b,m,rt<<1);
Build(m+1,e,rt<<1|1);
PushUp(rt);
}
void Update(int l,int r,int xx,int b,int e,int rt)
{
if (l<=b&&e<=r){
sign[rt]=xx;
seg[rt]=xx*(e-b+1);
return;
}
PushDown(e-b+1,rt);
int m=b+e>>1;
if (l<=m)
Update(l,r,xx,b,m,rt<<1);
if (m<r)
Update(l,r,xx,m+1,e,rt<<1|1);
PushUp(rt);
}
int K;
void Solve()
{
scanf("%d%d",&n,&q);
memset(sign,0,sizeof(sign));
Build(1,n,1);
for(int i=0;i<q;i++){
scanf("%d%d%d",&x,&y,&z);
Update(x,y,z,1,n,1);
}
printf("Case %d: The total value of the hook is %d.\n",++K,seg[1]);
}
int main()
{
int T;cin>>T;while(T--)
Solve();
return 0;
}

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

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

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

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

    题目地址:pid=1698">HDU 1698 区间替换裸题.相同利用lazy延迟标记数组,这里仅仅是当lazy下放的时候把以下的lazy也所有改成lazy就好了. 代码例如以下: # ...

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

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

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

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

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

  6. HDU 1698 Just a Hook 线段树区间更新、

    来谈谈自己对延迟标记(lazy标记)的理解吧. lazy标记的主要作用是尽可能的降低时间复杂度. 这样说吧. 如果你不用lazy标记,那么你对于一个区间更新的话是要对其所有的子区间都更新一次,但如果用 ...

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

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

  9. hdu - 1689 Just a Hook (线段树区间更新)

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 n个数初始每个数的价值为1,接下来有m个更新,每次x,y,z 把x,y区间的数的价值更新为z(1<= ...

随机推荐

  1. HDU 1863

    http://acm.hdu.edu.cn/showproblem.php?pid=1863 复习考研练练写Prim,第一次写,乱搞的,有点难看 邻接表+堆 #include <iostream ...

  2. 将对象序列化,反序列化到XML

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  3. iOS--UIView和UIWindow用法

    基础 UI(user interface)是用户界面:iOS的应用是由各种各样的UI控件组成 UIWindow就是一个窗口,学的第一个基础类,就是一个容器,可以在容器上放不同的内容,每个app都需要借 ...

  4. RTSP流和USB摄像头转MJPEG使用VLC

    测试环境: 系统: Ubuntu14.04 LTS Desktop 设备:海康IP摄像头和USB摄像头 1.需要先安装vlc包,命令行运行 sudo apt-get update sudo apt-g ...

  5. tomcat取带有中文的参数乱码的解决办法

    1. 对于post参数,可以用filter来处理,在dofilter之前,加入以下代码: request.setCharacterEncoding("UTF-8"); 2. 对于g ...

  6. Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, see logs f

    今天调试安卓程序遇到的问题Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching fa ...

  7. php部分---文件上传:错误处理、 客户端和服务器端的限制

    1.客户端页面 <!---客户端的配置 1.表单页面 2.表单发送方式为post 3.表单form中添加enctype="multipart/form-data" ----- ...

  8. pyqt4:线程的串联运行方式

    有些时候我们在pyqt中需要线程串行运行,而不是并发运行,用以下方式,这是在网上找的,暂存. > Hello > I have something like the foll scenar ...

  9. app打包(同步发生冲突)

    1:打包步骤: 1:桌面建立一个文件夹,名字叫keystore 2:点击build下面的 ,如下:     3:会出现如下界面: 4:下一步: 5:如果有keystore,请点击 choose exi ...

  10. 1月11日,HTML学习笔记

    <ul> <li>coffee</li> <li>tea</li> <li>mile</li> </ul> ...