***第一次写的果断超时,所以百度了一下,知道我写的每一次都要递归最底层,这样会花费很多时间,第二次写得线段树的区间更新,因为一个条件写错了,真是让我坑到死,

这样区间相同的不必更新,省了很多时间。。。***

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stack>
#include <queue> using namespace std;
typedef long long LL;
#define oo 0x3f3f3f3f
#define N 200100 struct node
{
int l, r;
int s;
} tree[N*4]; void build(int l, int r, int rt)
{
tree[rt].l=l;
tree[rt].r=r;
tree[rt].s=1;
if(l==r)
{
return ;
}
int mid=(l+r)/2;
build(l, mid, rt*2);
build(mid+1, r, rt*2+1);
} void update(int l, int r, int v, int rt)
{
if(tree[rt].s==v)
return ;
if(tree[rt].l==l&&tree[rt].r==r)
{
tree[rt].s=v;
return ;
}
if(tree[rt].s!=-1)
{
tree[rt*2].s=tree[rt*2+1].s=tree[rt].s;
tree[rt].s=-1;
}
int mid=(tree[rt].l+tree[rt].r)/2;
if(r<=mid) update(l, r, v, rt*2);
else if(l>mid) update(l, r, v, rt*2+1);
else
{
update(l, mid, v, rt*2);
update(mid+1, r, v, rt*2+1);
}
} int query(int rt)
{
if(tree[rt].s!=-1)
return (tree[rt].r-tree[rt].l+1)*tree[rt].s;
else
return query(rt*2)+query(rt*2+1);
} int main()
{
int T, n, m, a, b, c, cas=1;
scanf("%d", &T); while(T--)
{
scanf("%d%d", &n, &m);
build(1, n, 1);
while(m--)
{
scanf("%d%d%d", &a, &b, &c);
update(a, b, c, 1);
}
printf("Case %d: The total value of the hook is %d.\n", cas++, query(1));
}
return 0;
}
/*
20
3
2
1 2 2
2 2 3
*/

线段树的区间更新 hdu 1698的更多相关文章

  1. 线段树 [成段更新] HDU 1698 Just a Hook

    成段更新,需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候. 此处建议在纸上模拟一遍. Problem Descript ...

  2. hdu 1698:Just a Hook(线段树,区间更新)

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

  3. hdu 1556:Color the ball(线段树,区间更新,经典题)

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

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

    http://acm.hdu.edu.cn/showproblem.php?pid=1556 题意: N个气球,每次[a,b]之间的气球涂一次色,统计每个气球涂色的次数. 思路: 这道题目用树状数组和 ...

  5. UVA 12436-Rip Van Winkle's Code(线段树的区间更新)

    题意: long long data[250001]; void A( int st, int nd ) { for( int i = st; i \le nd; i++ ) data[i] = da ...

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

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

  7. zoj3686(线段树的区间更新)

    对线段树的区间更新有了初步的了解... A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a ...

  8. Color the ball (线段树的区间更新问题)

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色.但 ...

  9. ZOJ 2301 Color the Ball 线段树(区间更新+离散化)

    Color the Ball Time Limit: 2 Seconds      Memory Limit: 65536 KB There are infinite balls in a line ...

  10. 线段树离散化+区间更新——cf1179C好题

    绝对是很好的题 把问题转化成当第i个询问的答案是数值x时是否可行 要判断值x是否可行,只要再将问题转化成a数组里>=x的值数量是否严格大于b数组里的>=x的值 那么线段树叶子结点维护对于值 ...

随机推荐

  1. [ABC266Ex] Snuke Panic (2D)

    Problem Statement Takahashi is trying to catch many Snuke. There are some pits in a two-dimensional ...

  2. springBoot——读取数据

    在yml文件中读取数据,用$符号就可以 类似于这样的 如果要读取yml里面全部的数据,就用自动装配来写 而如果要用实体类来读取里面的数据 package com.example.springboot_ ...

  3. 解决win10的wifi打不开或无法搜索到周围wifi的问题

    今天笔者遇到了一个比较奇葩的问题,就是笔记本电脑的wifi打不开了,即使打开了也是搜索不到周围的wifi的.这个问题一开始笔者没有发现,因为在暑假期间都是使用笔记本连接自己的手机热点进行上网的.然而暑 ...

  4. 小程序优化:第三方SDK过大解决方案

    [前言] 小程序开发中,有时会遇到下面这种情况,项目目录中存放过大的js包,会被警告影响手机端性能,同时让开发编译启动变得很慢.慢是其次,单是影响性能这一点,就需要解决一下. [云资源] 将项目js包 ...

  5. C++ 核心指南 —— 性能

    C++ 核心指南 -- 性能 阅读建议:先阅读 <性能优化的一般策略及方法> 截至目前,C++ Core Guidelines 中关于性能优化的建议共有 18 条,而其中很大一部分是告诫你 ...

  6. ASR项目实战-决策点

    针对语音识别的产品,分别记录设计.开发过程中的决策点. 实时语音识别 对于实时语音识别来说,客户端和服务端之间实时交换语音数据和识别的结果. 客户端在启动识别时,即开始发送语音数据,期望在等待较短的时 ...

  7. 用Spring Boot 3.2虚拟线程搭建静态文件服务器有多快?

    Spring Boot 3.2 于 2023 年 11 月大张旗鼓地发布,标志着 Java 开发领域的一个关键时刻.这一突破性的版本引入了一系列革命性的功能,包括: 虚拟线程:利用 Project L ...

  8. DVWA File Inclusion(文件包含)全等级

    File Inclusion(文件包含) 目录: File Inclusion(文件包含) 前言 PHP伪协议 1.Low get webshell 本地文件包含 远程文件包含 2.Medium 3. ...

  9. android ProgressBar样式

    实现进度条由浅黄(#ffff33)到深黄色(#ff6600)的渐变样式. 与进度条自动从0加载到99,进度条每次加1 android:max:进度条的最大值. android:progressDraw ...

  10. 打造 VSCode 高效 C++ 开发环境的必备插件

    工欲善其事,必先利其器 C++ clangd:代码补全.跳转.clang-tidy 检查,自带 clang-format CodeLLDB:LLVM 的调试器(类比 GDB) CMake CMake ...