每个楼房,还有修改操作.简单的想到用线段树来维护信息. 显然线段树只需要维护y/x即可,对于每一个楼房,能看见的条件就是前面楼房的y/x的严格小于当前楼房的y/x. 线段树的区间修改不再赘述. 那么怎么维护可以看到的楼房数呢? 考虑在线段树的每一个节点上用一个变量sum来表示从这个节点的左端点向右端点看时能看到多少楼房. 假设现在有一区间:1,5,8,0,7,9.维护这个区间信息的节点编号为x. x<<1维护的区间是1,5,8,从1往8看可以看到三个楼房,故x<<1的sum的值为3…
\(\mathcal{Description}\)   Link.   给定点集 \(\{P_n\}\),\(P_i=(i,h_i)\),\(m\) 次修改,每次修改某个 \(h_i\),在每次修改后求出 \((0,0)\cup\{P_n\}\) 的下凸壳大小(输出时 \(-1\)).   \(n,m\le10^5\),\(h_i\ge0\). \(\mathcal{Solution}\)   令 \(k_i=\frac{h_i}{i}\),我们相当于要维护 \(\{k_n\}\) 中从 \(k…
洛谷P4198 楼房重建 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些事件发生在一个二维平面上.小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度.如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的. 施工队的建造总共进行了M天.初始时…
洛谷 P5021 [NOIP2018]赛道重建 传送门 思路 思路就是常规的思路,所以就不说了--我就是来记录一下我的\(AC\)之路的,真的是太爽了 没错--我也是一个个打的部分分,最后终于AC的,至于为什么中间又会有\(35\).\(25\).\(0\)这样的分数--纯粹是因为我犯了zz错误-- 代码 1.\(b_i = a_i + 1\) 链的情况 #include <bits/stdc++.h> using namespace std; inline int read() { char…
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师)的掌握程度 考完试有人说这题是马拉车,吓死我了 首先,你把数据读入之后,先用一个大法师把以每个节点为根的子树的大小和权值都预处理出来,方便待会剪枝 然后,你对以每个节点为根的子树,都判断一下以下条件(这时刚才处理的东西就有用了) ① 左子树和右子树的节点数是否相等 ② 左子树和右子树的权值是否相等…
根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种是通过分成 多块后在每块上打标记以实现快速区间修改,区间查询的一种算法.根号 分治与其思路相似,将原本若一次性解决时间复杂度很高的问题分块去解 决来降低整体的时间复杂度. 例题 以本题举例子哈希冲突 本题作为论文的第一道题目,是一道很好的练习题,注意,本体给出的 \(value[i]\) 是 \(i…
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 LCP 长度数组 \(p\). 数据范围:\(1\le |a|,|b|\le 2\times 10^7\). 蒟蒻语 别的题解为什么代码那么长.讲解那么复杂?蒟蒻不解,写篇易懂一点的,希望没有错误理解. 注意:蒟蒻的下标是从 \(0\) 开始的. 蒟蒻解 定义 \(z(i) (i>0)\):后缀 \(…
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \(\max_{k=l_i}^{r_i}h_k=g_i\).求满足条件的 \(h_i\) 的方案数膜 \(998244353\). 数据范围:\(1\le T\le 20\),\(1\le l_i\le r_i\le n\le 9\cdot 10^8\),\(1\le g_i\le A\le 9\cdo…
洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积的讲解. 三位向量的运算 模长: 即向量长度,\(|\vec{a}|=\sqrt{x_a^2+y_a^2+z_a^2}\). 点积: 标量 \(\vec{a}\cdot\vec{b}=|\vec{a}||\vec{b}|\cos<\vec{a},\vec{b}>=x_ax_b+y_ay_b+z_a…
洛谷P4859 已经没有什么好害怕的了 给定 \(n\) 和 \(k\),\(n\) 个糖果能量 \(a_i\) 和 \(n\) 个药片能量 \(b_i\),每个 \(a_i\) 和 \(b_i\) 互不相等.将糖果和药片一一对应,求 糖果能量大于药片 比 药片能量大于糖果 多 \(k\) 组的方案数. 数据范围:\(1\le n\le 2000\),\(0\le k\le n\). 萌新初学二项式反演,这是第一道完全自己做出来的题,所以写篇题解庆祝并提升理解. 有 \(\frac{n+k}{2…