首页 > 其他分享 >楼房重建线段树

楼房重建线段树

时间:2024-03-22 13:00:14浏览次数:19  
标签:s2 线段 儿子 楼房 序列 s1 重建

link

维护单调序列、点修的线段树。

首先考虑一个楼房被看见的必要条件是前面没有斜率大于它的楼房,不等式可以推出来。

然后本质上是维护一个从 \(1\) 号开始斜率单调上升的序列长度,注意,不能跳跃选择,即某栋楼房能加入序列则必须加入。

线段树维护区间最大值和区间上升序列长度,由于是点修,所以不需要 push_down,来考虑 push_up。

对于一段区间,设其左儿子为 ls,右儿子为 rs。显而易见的一点就是 ls 一定可以加入答案中,考虑右儿子。

设左儿子最大值为 lx,若右儿子中只有一个点,此时容易判断能否加入。

否则,将右儿子分裂成 \(s1,s2\)。

  • 若 s1.mx>lx,显然 s2 对 rs 的贡献一定能被加入到答案中,递归去找 s1。

  • 否则,s1 必不会产生贡献,递归找 s2。

这样一直只会找一边,时间复杂度 \(O(n\log^2 n)\)。

若不是点修,是区间修改,应该可以用分块思想做到 \(O(n\log^2 n)\),或许会更劣一点。

剩下不会。

代码不会写。

为什么这么废物呢?

标签:s2,线段,儿子,楼房,序列,s1,重建
From: https://www.cnblogs.com/BYR-KKK/p/18089226

相关文章

  • 超分辨率(3)--基于RCAN网络实现图像超分辨率重建
    目录一.项目介绍二.项目流程详解2.1.数据处理模块2.2.损失函数设置 2.3.网络模型构建三.测试网络一.项目介绍RCAN:ResidualChannelAttentionNetwork(残差通道注意网络)卷积神经网络(CNN)的深度对于图像超分辨率(SR)是极其关键的因素。然而,我们观察到,更深层次的图......
  • 李超线段树
    模板题动态添加线段,求某个\(x\)对应的\(y\)最大是多少,且对应哪条直线。因为\(x\)比较小,考虑在\(x\)轴上建立线段树。把每个线段写成\(y=kx+b\)的解析式形式并求出它的定义域\([l,r]\),每条线段就可以看作是一个应用在\([l,r]\)上的区间修改。每次查询就是单点查询。......
  • P8626 [蓝桥杯 2015 省 A] 灾后重建
    根号分治之类的思路分析这里就不讲了,主要关注代码细节:#include<iostream>#include<stdio.h>#include<algorithm>#include<vector>#include<string>#include<cmath>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;co......
  • P1712 [NOI2016] 区间 线段树+双指针
    //Problem://P1712[NOI2016]区间////Contest:Luogu//URL:https://www.luogu.com.cn/problem/P1712//MemoryLimit:250MB//TimeLimit:1000ms////PoweredbyCPEditor(https://cpeditor.org)#include<iostream>#include<algorithm......
  • CF1514D-区间(绝对)众数-莫队、随机化、可持久化线段树
    link:https://codeforces.com/contest/1514/problem/D很久以前小号打的场了,当时D题写的莫队,现在重新来看看。题意:给一个序列\([a_1,\dots,a_n]\),有q次询问,每次问:把\([a_l,\dots,a_r]\)划分最少几个不相交子序列,才能使得每个子序列是beautiful的。称一个序列\(a_1,\dots,a_x\)......
  • 406. 根据身高重建队列c
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/typedefstructnode{inth......
  • 大都市meg(线段树/树状数组+LCA)
    题目描述在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员BlueMary也开始骑着摩托车传递邮件了。不过,她经常回忆起以前在乡间漫步的情景。昔日,乡下有依次编号为1..n的n个小村庄,某些村庄之间有一些双向的土路。从每个村庄都恰好有一条路径到达村庄1(即比特堡)。并且......
  • 超分辨率(2)--基于EDSR网络实现图像超分辨率重建
    目录一.项目介绍二.项目流程详解2.1.构建网络模型2.2.数据集处理2.3.训练模块2.4.测试模块三.测试网络一.项目介绍EDSR全称EnhancedDeepResidualNetworks,是SRResnet的升级版,其对网络结构进行了优化(去除了BN层),省下来的空间可以用于提升模型的size来增强表现力。......
  • 线段树模板
    线段树模板沉淀了很久,总算是掌握了线段树的经典模板了。但是还是需要深刻练习才能反复加深印象呢//线段树模板#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;intans[N*4];intt1[N*4],t2[N*4];inta[N];//存放输入数据intn,......
  • 数据结构——线段树 学习笔记
    数据结构——线段树学习笔记classseg_t{private:structemm{intl,r;structv;};vector<emm>a;voidpush_up(intk){}voidaction(intk,intv){}voidpush_down(intk){}voidbuild(vector<any>q,intk,intl,intr){a[k].l=......