题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698

注意:用位运算会更快,不然超时。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = ;
int a[maxn],lazy[maxn];
void pushdown(int k,int l,int r)
{
if(lazy[k])
{
lazy[k<<]=lazy[k];
lazy[k<<|]=lazy[k];
int mid=(l+r)>>;
a[k<<]=(mid-l+)*lazy[k];
a[k<<|]=(r-mid)*lazy[k];
lazy[k]=;
}
}
void build(int k,int l,int r)
{
lazy[k]=;
if(l==r)
{
a[k]=;
return ;
}
int mid=(l+r)>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
a[k]=a[k<<]+a[k<<|];
}
void update(int k,int l,int r,int x,int y,int v)
{
if(x<=l&&y>=r)
{
lazy[k]=v;
a[k]=(r-l+)*v;
return ;
}
pushdown(k,l,r);
int mid=(l+r)>>;
if(x<=mid) update(k<<,l,mid,x,y,v);
if(y>mid) update(k<<|,mid+,r,x,y,v);
a[k]=a[k<<]+a[k<<|];
}
int query(int k,int l,int r,int x,int y)
{
if(x<=l&&y>=r) return a[k];
pushdown(k,l,r);
int mid=(l+r)>>;
int ans=;
if(x<=mid) ans+=query(k<<,l,mid,x,y);
if(y>mid) ans+=query(k<<|,mid+,r,x,y);
return ans;
}
int main(void)
{
int n,m,x,y,k,t,i,pt=;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
build(,,n);
for(i=;i<m;i++)
{
scanf("%d%d%d",&x,&y,&k);
update(,,n,x,y,k);
}
printf("Case %d: The total value of the hook is %d.\n",pt++,query(,,n,,n));
}
return ;
}

hdu-1698(线段树,区间修改)的更多相关文章

  1. E - Just a Hook HDU - 1698 线段树区间修改区间和模版题

    题意  给出一段初始化全为1的区间  后面可以一段一段更改成 1 或 2 或3 问最后整段区间的和是多少 思路:标准线段树区间和模版题 #include<cstdio> #include& ...

  2. HDU - 1698 线段树区间修改,区间查询

    这就是很简单的基本的线段树的基本操作,区间修改,区间查询,对区间内部信息打上laze标记,然后维护即可. 我自己做的时候太傻逼了...把区间修改写错了,对给定区间进行修改的时候,mid取的是节点的左右 ...

  3. Hdu 1698(线段树 区间修改 区间查询)

    In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroes. T ...

  4. hdu 1698 线段树 区间修改

    #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #includ ...

  5. HDU 1698 线段树 区间更新求和

    一开始这条链子全都是1 #include<stdio.h> #include<string.h> #include<algorithm> #include<m ...

  6. hdu 1698 线段树 区间更新 区间求和

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

  7. HDU(1698),线段树区间更新

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 区间更新重点在于懒惰标记. 当你更新的区间就是整个区间的时候,直接sum[rt] = c*(r- ...

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

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

  9. HDU 3397 线段树区间修改

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  10. Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> us ...

随机推荐

  1. delphi const的用法

    unit RadKeygen; interface uses Classes,SysUtils,Windows; function fun1():string; implementation cons ...

  2. gevent 实现io自动切换,gevent.join([]), gevent.spawn, 爬虫多并发的实现

    gevent 是一个第三方库,可以很容易的实现遇到io(文件传输)操作时,程序自动跳转到下一个程序 例一: 用gevent.sleep()  来模拟io操作 import gevent def foo ...

  3. Error 2503 and 2502 when installing/uninstalling on Windows 10

    1. Hold Ctrl+Shift and press Esc. 2. Locate “Windows Explorer” under “Windows processes”, now right ...

  4. WebConfig配置讲解

    http://www.cnblogs.com/cyq1162/archive/2006/11/16/562690.html sqlserver配置数据库连接字符串时需分2种情况 windows 和 s ...

  5. 面试题-------SSL协议简介

    SSL协议简介 SSL简介 Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之 ...

  6. 从底层谈WebGIS 原理设计与实现(二):探究本质,WebGIS前端地图显示之地图比例尺换算原理

    从底层谈WebGIS 原理设计与实现(二):探究本质,WebGIS前端地图显示之地图比例尺换算原理 作者:naaoveGI…    文章来源:http://www.cnblogs.com/naaove ...

  7. 通过maven 上传jar 到nexus3,cong nexus3下载jar

    nexus是一种常见的maven私服软件. 网上介绍的都是nexus2的使用,下面是最新版nexus3的使用方式. 首先需要从官网下载nexus3的包,很卡. 下载好以后解压会有两个文件夹:nexus ...

  8. RNN LSTM 介绍

    [RNN以及LSTM的介绍和公式梳理]http://blog.csdn.net/Dark_Scope/article/details/47056361 [知乎 对比 rnn  lstm  简单代码] ...

  9. Ubuntu 18.04上安装R及Rstudio

    安装R引用自:https://www.howtoing.com/how-to-install-r-on-ubuntu-18-04 安装Rstudio引用自:https://www.rstudio.co ...

  10. eclipse项目setting文件

    项目下的.settings文件夹 org.eclipse.wst.common.component文件描述了项目发布到tomcat等web容器的基本信息 <?xml version=" ...