标记永久化,线段树套单调队列。

标记永久化的好处在于可以减少下传标记的时间。

如果有些标记很难下传,但是打标记的顺序对结果没有影响,就可以用标记永久化

比如说 支持矩阵加、矩阵求和就可以用带标记永久化的二维线段树来做——> 用第二维线段树维护第一维线段树上的标记

标记永久化具体做法:维护两种值,A、B。

修改:如果区间覆盖了一个节点,修改A,返回。如果经过一个节点,修改B,递归修改两个子树

查询:如果区间覆盖了一个节点,返回B。如果经过了一个节点,递归查询子树并加上当前节点的A值

另:(大雾

一维:返回一个变量的值

二维:区间求和

三维:矩形求和

四维:矩形加、矩形求和

五维:矩形加、矩形求和,带撤销

六维:矩形加、矩形求和,可持久化

七维:?

#include <bits/stdc++.h>
#define N 1001000
#define M 6000000
#define mp make_pair
#define fr first
#define sc second
#define pI pair <int, int>
#define INF 1000000000
#define int unsigned
using namespace std;
int n, L;
int lb[M], rb[M], lc[M], rc[M];
list <pI> tg[M], su[M];
int xi[N], yi[N], li[N], px[N];
int tot, ss, tim;
int build(int l, int r)
{int nw = ++ ss;lb[nw] = l; rb[nw] = r;if (l != r)lc[nw] = build(l, (l + r) / 2),rc[nw] = build((l + r) / 2 + 1, r);return nw;
}
void add(int t, int l, int r, pI s)
{if (l <= lb[t] && rb[t] <= r){while (!tg[t].empty() && tg[t].back().sc >= s.sc) tg[t].pop_back();tg[t].push_back(s);return;}while (!su[t].empty() && su[t].back().sc >= s.sc) su[t].pop_back();su[t].push_back(s);if (l <= rb[lc[t]]) add(lc[t], l, r, s);if (r >= lb[rc[t]]) add(rc[t], l, r, s);
}
int sum(int t, int l, int r)
{int s;while (!tg[t].empty() && tg[t].front().fr < tim)tg[t].pop_front();if (!tg[t].empty()) s = tg[t].front().sc;else s = INF;while (!su[t].empty() && su[t].front().fr < tim)su[t].pop_front();if (l <= lb[t] && rb[t] <= r){if (!su[t].empty()) s = min(s, su[t].front().sc);return s;}if (l <= rb[lc[t]]) s = min(s, sum(lc[t], l, r));if (r >= lb[rc[t]]) s = min(s, sum(rc[t], l, r));    return s;
}
int f[N];
signed main()
{scanf("%d%d", &n, &L);for (int i = 2; i <= n; ++ i)scanf("%d%d%d", &xi[i], &yi[i], &li[i]),px[++ tot] = xi[i],px[++ tot] = yi[i];sort(px + 1, px + tot + 1);xi[1] = px[1]; yi[1] = px[tot];tot = unique(px + 1, px + tot + 1) - px - 1;for (int i = 1; i <= n; ++ i)xi[i] = lower_bound(px + 1, px + tot + 1, xi[i]) - px,yi[i] = lower_bound(px + 1, px + tot + 1, yi[i]) - px;build(1, tot);//printf("%d\n", ss);add(1, 1, tot, mp(L, 0));for (int i = 2; i <= n; ++ i){//if (i == 182796)//    puts("233");tim = li[i];f[i] = sum(1, xi[i], yi[i]) + 1;add(1, xi[i], yi[i], mp(li[i] + L, f[i])); printf("%d\n", f[i] > n? -1: f[i]);}
}

转载于:https://www.cnblogs.com/AwD-/p/6298184.html

bzoj 1171: 大sz的游戏, bzoj 2892: 强袭作战相关推荐

  1. [线段树 标记永久化 单调队列] BZOJ 1171 大sz的游戏 BZOJ 2892 强袭作战

    很好的题解:http://blog.sina.com.cn/s/blog_76f6777d0101dizp.html "考虑裸的n^2暴力dp. dp[i]=min(dp[j])+1 ( d ...

  2. 【BZOJ-28921171】强袭作战大sz的游戏 权值线段树+单调队列+标记永久化+DP...

    2892: 强袭作战 Time Limit: 50 Sec  Memory Limit: 512 MB Submit: 45  Solved: 30 [Submit][Status][Discuss] ...

  3. BZOJ1171: 大sz的游戏BZOJ2892: 强袭作战

    Description 大sz最近在玩一个由星球大战改编的游戏.话说绝地武士当前共控制了N个星球.但是,西斯正在暗处悄悄地准备他们的复仇计划.绝地评议会也感觉到了这件事.于是,准备加派绝地武士到各星球 ...

  4. bzoj 4573 大森林

    bzoj 4573 大森林 由于树上路径是唯一的,查询合法的两个点间路径长度显然与其他加点操作无关,所以可以离线处理,将所有的查询放在加点后. 这样我们可以对每棵树都在上颗树的基础上处理好形态后,处理 ...

  5. HTML期末大作业~棋牌游戏静态网站(6个页面) HTML+CSS+JavaScript

    HTML期末大作业~棋牌游戏静态网站(6个页面) HTML+CSS+JavaScript 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数 ...

  6. 大数据文字游戏_基于大数据的游戏化教学系统研究.docx

    基于大数据的游戏化教学系统研究 ―.引言 目前,我国高校在线开放课程的建设已经取得了较大的发展,在线课程的使用已经使高 校教学发生了巨大的变化.课程的网络资源可以作为延伸课堂教学的工具,有效减轻了课堂 ...

  7. html 转盘游戏开发,【scratch】简单的大转盘小游戏

    彩色大转盘 大家是否在各种饭店.商家.网页上看到过大转盘的抽奖活动装置? 对就是这种!!!有各种奖品以及充斥着整个版面50%+的谢谢参与. 我们的小码农也做了一款简单的并且没有(大概)谢谢参与的大转盘 ...

  8. 十大笔记本电脑排行_2020双十一,十大高性价比游戏笔记本电脑值得买排行榜之搭载144Hz电竞屏机型(配置推荐)福利放送...

    最新文章已更新20201028,戳下方⏬文章链接看最新排行 Leo Leung:双十一更新,预算万元以下144Hz广色域电竞屏游戏笔记本电脑十大高性价比机型排行榜.福利放送!​zhuanlan.zhi ...

  9. ★「C++游戏」BattleOfPhantom:大乱斗游戏升级版

    (原创) 目前正在不断更新! ★ 一款超级有趣的大乱斗游戏,包含多种游戏模式,支持双人联机. 离线情况下也可以与多个(或一群)机器玩家进行疯狂的对战. 直接上图 使用C++ with EGE图形库编写 ...

最新文章

  1. cmakelists 常见用法
  2. flutter 卡顿_Flutter WebView 卡顿问题
  3. python import 原理-Python之禅-import this的实现
  4. how to balance between csdn and github?
  5. Autofac框架初识与应用
  6. 优秀学生专栏——孙珩发
  7. 让机器读懂视频:亿级淘宝视频背后的多模态AI算法揭秘
  8. 什么鬼?弃用JDK动态代理,Spring5 默认使用 CGLIB 了?
  9. 安装详细步骤win7_windows安装器怎么安装原版win7【详细教程】
  10. [Swift]LeetCode1051.高度检查器 | Height Checker
  11. 如何批量把照片设置统一尺寸?
  12. 云计算、计算虚拟化、网络基础简介
  13. 微信小程序文本输入<input/> 详解
  14. Android实现中英文切换
  15. 把QUERY的输出结果作为数据源_小七_新浪博客
  16. php爬拉钩数据,拉勾网数据两种爬取
  17. Sqlmap免Python版启动器的小修改(根据学习进度逐步更新)
  18. 前后端分离跨域上传图片代码
  19. BeagleBone Black Industrial系统更新设置一贴通
  20. 【论文写作】Word文档中的MathType公式大小不一导致版面很难看完美解决方法

热门文章

  1. 苹果手机怎么用计算机打出字,iPhone输入法忽然打不出中文怎么办?收下这份指南日常打字如飞!...
  2. NFT/Web3/区块链项目孵化包装策划,到底该自建运营还是专业外包孵化?
  3. 输出的字符串中有空格并且无法替换B e a r e r N D c y Z T g 4 N z A t N 2 N h Z C 0 0 Y 2 E 4 L T g x M W E t O D Y
  4. 关于spring-mybatis整合出现的问题Error creating bean with name ‘sqlSessionFactory‘ defined in class path reso
  5. cocos2dx lua 3.14 适配 安卓 刘海屏 全面屏 异形屏
  6. 《关于我重装系统后修复VSCode这档事》C++环境配置
  7. 计算机组成原理---输入输出设备
  8. 浅谈大数据任务调度平台
  9. Excel工具类(详细版)
  10. 使用R读取并查看数据