FZU_1608 Huge Mission 【线段树区间更新】
一、题目
二、分析
区间更新,用线段树的懒标记即可。需要注意的时,由于是在最后才查询的,没有必要每次更新都对$sum$进行求和。还有一点就是初始化的问题,一定记得线段树上每个点都需要初始化。
三、AC代码
1 #include <cstdio>
2 #include <cstring>
3 #include <iostream>
4 #include <algorithm>
5 #include <vector>
6 #include <cmath>
7
8 using namespace std;
9 #define ll long long
10 #define lson (rt<<1)
11 #define rson (rt<<1|1)
12 #define Min(a,b) ((a)>(b)?(b):(a))
13 #define Max(a,b) ((a)>(b)?(a):(b))
14 const int MAXN = 5e4;
15 struct Node
16 {
17 int lazy, sum;
18 }segTree[MAXN<<2];
19
20 void Push_down(int rt)
21 {
22 if(segTree[rt].lazy > 0) {
23 segTree[lson].lazy = Max(segTree[rt].lazy, segTree[lson].lazy);
24 segTree[rson].lazy = Max(segTree[rt].lazy, segTree[rson].lazy);
25 }
26 }
27
28 void Push_up(int rt)
29 {
30 segTree[rt].sum = segTree[lson].sum + segTree[rson].sum;
31 }
32
33 void Build(int rt, int l, int r)
34 {
35 segTree[rt].lazy = segTree[rt].sum = 0;
36 if(l == r) {
37 return;
38 }
39 int mid = (l + r) >> 1;
40 Build(lson, l, mid);
41 Build(rson, mid + 1, r);
42 Push_up(rt);
43 }
44
45 void Update(int rt, int l, int r, int L, int R, int p)
46 {
47 if(L <= l && r <= R) {
48 segTree[rt].lazy = Max(segTree[rt].lazy, p);
49 return;
50 }
51 int mid = (l + r) >> 1;
52 if(L <= mid)
53 Update(lson, l, mid, L, R, p);
54 if(R > mid)
55 Update(rson, mid + 1, r, L, R, p);
56 }
57
58 void Query(int rt, int l, int r)
59 {
60 if(l == r) {
61 segTree[rt].sum = Max(segTree[rt].sum, segTree[rt].lazy);
62 //cout << l << " : " << segTree[rt].sum << " lazy: " << segTree[rt].lazy << " / " << endl;
63 return;
64 }
65 Push_down(rt); //关键,不是叶子的时候,懒标记一定要下传
66 int mid = (l + r) >> 1;
67 Query(lson, l, mid);
68 Query(rson, mid + 1, r);
69 Push_up(rt); //总和
70 }
71
72 int main()
73 {
74 int N, M;
75 //freopen("input.txt", "r", stdin);
76 while(scanf("%d%d", &N, &M) != EOF) {
77 int S, T, P;
78 //memset(segTree, 0, sizeof(segTree));
79 Build(1, 1, N);
80 for(int i = 0; i < M; i++) {
81 scanf("%d%d%d", &S, &T, &P);
82 //++后相当于是以区间来当点用
83 S++;
84 Update(1, 1, N, S, T, P);
85 }
86 Query(1, 1, N);
87 printf("%d\n", segTree[1].sum);
88
89 }
90 return 0;
91 }
FZU_1608 Huge Mission 【线段树区间更新】的更多相关文章
- FZU-1608 Huge Mission 线段树(更新懒惰标记)
题目链接: https://cn.vjudge.net/problem/FZU-1608 题目大意: 长度n,m次操作:每次操作都有三个数:a,b,c:意味着(a,b]区间单位长度的价值为c,若某段长 ...
- HDU 1556 Color the ball(线段树区间更新)
Color the ball 我真的该认真的复习一下以前没懂的知识了,今天看了一下线段树,以前只会用模板,现在看懂了之后,发现还有这么多巧妙的地方,好厉害啊 所以就应该尽量搞懂 弄明白每个知识点 [题 ...
- hihoCoder 1080 : 更为复杂的买卖房屋姿势 线段树区间更新
#1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们 ...
- HDU 5023 A Corrupt Mayor's Performance Art(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 解题报告:一面墙长度为n,有N个单元,每个单元编号从1到n,墙的初始的颜色是2,一共有30种颜色 ...
- HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4902 解题报告:输入一个序列,然后有q次操作,操作有两种,第一种是把区间 (l,r) 变成x,第二种是 ...
- HDU 1698 线段树 区间更新求和
一开始这条链子全都是1 #include<stdio.h> #include<string.h> #include<algorithm> #include<m ...
- POJ-2528 Mayor's posters (线段树区间更新+离散化)
题目分析:线段树区间更新+离散化 代码如下: # include<iostream> # include<cstdio> # include<queue> # in ...
- ZOJ 1610 Count the Colors (线段树区间更新)
题目链接 题意 : 一根木棍,长8000,然后分别在不同的区间涂上不同的颜色,问你最后能够看到多少颜色,然后每个颜色有多少段,颜色大小从头到尾输出. 思路 :线段树区间更新一下,然后标记一下,最后从头 ...
- POJ 2528 Mayor's posters (线段树区间更新+离散化)
题目链接:http://poj.org/problem?id=2528 给你n块木板,每块木板有起始和终点,按顺序放置,问最终能看到几块木板. 很明显的线段树区间更新问题,每次放置木板就更新区间里的值 ...
- HDU5039--Hilarity DFS序+线段树区间更新 14年北京网络赛
题意:n个点的树,每个条边权值为0或者1, q次操作 Q 路径边权抑或和为1的点对数, (u, v)(v, u)算2个. M i修改第i条边的权值 如果是0则变成1, 否则变成0 作法: 我们可以求出 ...
随机推荐
- 5.Fanout交换机之新订单通知商户场景
标题 : 5.Fanout交换机之新订单通知商户场景 目录 : RabbitMQ 序号 : 5 const string newOrderQueueName = "neworder-queu ...
- 网络安全-WEB基础,burpsuite,WEB漏洞
1. web基础 HTTP: GET POST REQUEST RESPONSE... JDK robots.txt 网页源代码/注释 目录扫描--御剑,dirmap 端口信息--nmap 备份文件- ...
- PAT L2-020 功夫传人【BFS】
一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹.挖到 ...
- 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解
题意: n * m的矩阵,为0表示可以走,1不可以走.规定每走一步只能向下.向左.向右走.现给定两种操作: 一.1 x y表示翻转坐标(x,y)的0.1. 二.2 x y表示从(1,x)走到(n,y) ...
- 二、mycat基础知识、基本配置
官网 http://www.mycat.io/ Mycat 概要介绍 https://github.com/MyCATApache/Mycat-Server 入门指南 https://github.c ...
- vue-cli emit webpack config
vue-cli emit webpack config 如何暴漏出 vue-cli 的 webpack 配置文件 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章 ...
- Google Chrome All In One
Google Chrome All In One Chrome Experiments Chrome 测试版 Chrome 开发者版 Chrome Canary 版 chrome://welcome/ ...
- free website generator by google
free website generator by google https://sites.google.com/view/webgeeker-xyz/首页 https://sites.google ...
- CNN专访灵石CTO:Baccarat流动性挖矿能否持续?
近日,CNN记者Robert独家专访Baccarat的项目团队CTO STEPHEN LITAN,跟他特别聊了聊DeFi的近况. 以下是专访全文: Robert:推出Baccarat的契机是什么? S ...
- 15_MySQL·WHERE子句中条件执行的顺序