初写线段树的时候,印象最深的一道,有一个pushdown的操作,使我的tle变成了ac

题意

输入t,然后t组数据

输入n,m,n代表n个点上价值全是1的绳子,m代表m次操作

m行l,r,val  就是区间l,r变成val

求最后绳子总共价值

思路

线段树,懒人标记

 #include<queue>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<cmath>
#include<string>
#include<vector>
#include<functional>
#define inf 0x3f3f3f3f
#define mem(k,b) memset(k,b,sizeof(k))
#define ll long long
#define ls (x)<<1
#define rs (x)<<1|1
#define lson ls,l,mid
#define rson rs,mid+1,r
using namespace std;
const int maxn = ; int t, n, m, q, p, z;
int tree[maxn << ], add[maxn << ]; void pushup(int x) {
tree[x] = tree[ls] + tree[rs];
return;
} void pushdown(int x, int len){
if (add[x]){
add[ls] = add[x];
add[rs] = add[x];
tree[ls] = add[x] * (len - (len >> ));
tree[rs] = add[x] * (len >> );
add[x] = ;
}
} void build(int x, int l, int r){
add[x] = ;
if (l == r){
tree[x] = ;
return;
}
int mid = (l + r) >> ;
build(lson); build(rson);
pushup(x);
} void xiugai(int x, int l, int r, int l1, int r1,int zhi1){
if (l >= l1 && r<=r1){
add[x] = zhi1;
tree[x] = zhi1*(r - l + );
return;
}
pushdown(x, r - l + );
int mid = (l + r) >> ;
if (r1<= mid){
xiugai(lson, l1, r1, zhi1);
}
else if (l1>mid){
xiugai(rson, l1, r1, zhi1);
}
else{
xiugai(lson, l1, mid, zhi1);
xiugai(rson, mid + , r1, zhi1);
}
pushup(x);
} int main(){
int c = ;
scanf("%d",&t);
while (t--){
scanf("%d%d",&n,&m);
build(, , n);
for (int i = ; i < m; i++){
scanf("%d%d%d",&q,&p,&z);
xiugai(, , n, q, p, z);
}
printf("Case %d: The total value of the hook is %d.\n",c++,tree[]);
}
return ;
}

hdu1698 区间更新的更多相关文章

  1. hdu1698 线段树区间更新

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

  2. hdu1698线段树的区间更新区间查询

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

  3. 【原创】hdu1698 Just a Hook(线段树→区间更新,区间查询)

    学习线段树第二天,这道题属于第二简单的线段树,第一简单是单点更新,这个属于区间更新. 区间更新就是lazy思想,我来按照自己浅薄的理解谈谈lazy思想: 就是在数据结构中,树形结构可以线性存储(线性表 ...

  4. HDU1698:Just a Hook(线段树区间更新)

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

  5. hdu1698 Just a hook 线段树区间更新

    题解: 和hdu1166敌兵布阵不同的是 这道题需要区间更新(成段更新). 单点更新不用说了比较简单,区间更新的话,如果每次都更新到底的话,有点费时间. 这里就体现了线段树的另一个重要思想:延迟标记. ...

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

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

  7. hihoCoder 1080 : 更为复杂的买卖房屋姿势 线段树区间更新

    #1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们 ...

  8. hdu 3397 Sequence operation(线段树:区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3397 题意:给你一个长度为n的0,1序列,支持下列五种操作, 操作0(0 a b):将a到b这个区间的 ...

  9. 【HDU 4614】Vases and Flowers(线段树区间更新懒惰标记)

    题目0到n-1的花瓶,操作1在下标a开始插b朵花,输出始末下标.操作2清空[a,b]的花瓶,求清除的花的数量.线段树懒惰标记来更新区间.操作1,先查询0到a-1有num个空瓶子,然后用线段树的性质,或 ...

随机推荐

  1. SQLAlchemy -高级查询

    查询 # -*- coding: utf-8 -*-   from sqlalchemy.orm import sessionmaker   from SQLAlchemy.create import ...

  2. javascript当中局部变量和全局变量

    2)局部变量和全局变量 马克-to-win:浏览器里面 window 就是 global,通常可以省.nodejs 里没有 window,但是有个叫 global 的.例 3.2.1<html& ...

  3. 断点调试,issubclass和ininstance的使用

    一等公民 只要可以把一个东西赋值给一个变量,这个东西就叫一等公民 断点调试 在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 变红的地方,程序执行到,就会暂停 断电应该加载报错之前 绿色箭头表示 ...

  4. Angular 2.0 文本拖拽

    基于Angular7.1和TypeScript实现 Html代码 <div style="padding-left: 0px;"> <div id='conten ...

  5. java将小写金额转换为大写的工具类

    public class Tool {             private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分";      ...

  6. Hibernate第三天-Hibernate主配置信息

    今天是学习Hibernate的第三天,主要分析一下Hibernate的配置文件中的信息 Hibernate中的配置文件有两种,第一种是主配置文件hibernate.cfg.xml,第二种是映射配置文件 ...

  7. c# 泛型demo

    private void Fn_Post<T>(T dto, string api) { HttpClient client = new HttpClient(); client.Base ...

  8. python 处理form/data文件上传

    处理multipart/form-data 的java serverlet请求接口通过python实现 记住不要在头加:"Content-Type":"multipart ...

  9. 利用ZotFile对Zotero中的文献进行整理

    1.安装ZotFile插件 *** 以后补充 *** 2.配置ZotFile 配置 3.整理操作 (1)将文件拖进Zotero软件相应的目录(自己创建) (2)查看文件位置 (未整理之前) (3)整理 ...

  10. Python学习之面向对象基础

    python的面向对象和以前学的c++,Java都是一般,大同小异,面向对象基础先谈谈类的构造,编写,属性和方法的可见性等等 1.定义类,创建和使用对象 #定义类 class Student(obje ...