不错的一道题。 题意:每次修改一栋楼,求这些楼顶跟原点$(0,0)$的斜率单调上升长度(不是$\text{LIS}$)。 因为一个楼房能被看到可以等价于它的斜率比之前的任何一个都大。 这道题实际上满足区间合并,但是比较麻烦。 重点就在$\text{pushup}$的写法。 首先定义线段树中区间的解即 ...
分类:
其他好文 时间:
2019-03-16 12:35:55
阅读次数:
184
题目链接:https://cn.vjudge.net/contest/281960#problem/G 题目大意:中文问题 具体思路:首先每一个点的值可以用当前这个点的斜率来表示,每一次输入一个值,我们先看当前这个点之前的区域中有多少点是小于当前这个点的斜率的,这样每一次查询就可以了。 查询的时候: ...
分类:
其他好文 时间:
2019-02-07 20:38:37
阅读次数:
185
"题目" 这道题真是非常巧妙了 首先分析一下对于一个楼房$i$它要是想能被看见需要满足什么条件 显然对于任意的$jh_j$$ 也就是 $$\frac{h_i}{i} \frac{h_j}{j}$$ 也就是一个从$1$开始的最长上升子序列 那么还有单点修改,这是一个动态$dp$? 当然不是了,这里需要 ...
分类:
其他好文 时间:
2019-01-26 21:39:22
阅读次数:
161
这道题思路真是妙啊QWQ "原题地址" 题目大意:在一个平面内,求出所有的高度大于$0$的点与$(0,0)$的连线没有与之前的线段相交的楼房,带修改 看到带修改,显然会想到数据结构来维护,再看到再平面区间加减和区间查询,显然又会想到线段树。 那线段树的每一个节点要维护什么值呢? 看到题面自然会想到斜 ...
分类:
其他好文 时间:
2019-01-19 21:13:56
阅读次数:
202
"传送门" 很妙的思路 首先,我们可以把每一栋楼房转化为它的顶部到原点这条直线的斜率,这样就变成了从一个序列中选出一个最长上升子序列(其实不是最长上升子序列,不过可以这么理解) 考虑用线段树来维护,对于每个区间,我们维护这个区间的最大值以及这个区间的答案,那么最后的答案就是$ans[1]$ 对于叶节 ...
分类:
其他好文 时间:
2018-11-14 14:15:24
阅读次数:
189
链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2957 思路: 用分块可以很简单的过掉,但是这道题也可以用线段树写。 分类讨论左区间最大值对右区间取值的影响,这样每次都只计算左右区间其中一个,复杂度就降成了logn. 实现代码: ...
分类:
其他好文 时间:
2018-10-17 00:19:46
阅读次数:
172
楼房重建 题目描述 小A的楼房外有一大片施工工地,工地上有$N$栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接$(i,0)$和$ ...
分类:
其他好文 时间:
2018-10-06 12:09:04
阅读次数:
179
在杜教直播中得知2018多校第八场第10题和这个题很相近,所以先补这个题。 代码和思路借鉴了这篇博客:http://hzwer.com/6746.html。 这题是询问从原点能看到的楼房数目,首先对某一个点修改后,对之前的点没有影响,所以只需要处理后面的点,而后面的点分为两种情况: 1:查询区间的左 ...
分类:
其他好文 时间:
2018-08-17 12:52:31
阅读次数:
173
题意:维护斜率看到的楼房。 思路:线段树维护一个斜率。 啊啊啊,(某次考试)调了一年OTZ. c++ include using namespace std; const int maxn = 100010; inline int read(){ int q=0,f=1;char ch=getcha ...
分类:
其他好文 时间:
2018-08-04 20:32:03
阅读次数:
113
题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表 ...
分类:
其他好文 时间:
2018-07-03 22:35:43
阅读次数:
166