随笔分类 -  数据结构 / 树状数组

摘要:首先发现 \(p_x\times dis(x,y)+q_x\) 异常像是能斜率优化的样子,那先把求 \(f_x\) 的式子写出来(下设 \(d_x\) 表示 \(x\) 到根的距离): \[f_x=\min_{lca(x,y)=y,y\ne x}(p_x\times(d_x-d_y)+q_x+f_y 阅读全文
posted @ 2024-12-23 08:59 长安一片月_22 阅读(10) 评论(0) 推荐(0) 编辑
摘要:考虑到正向求解困难,于是正难则反。 那么实际上对于 \(a_i\) 和 \(a_{i+1}\) 来说,它们给答案的贡献就是满足 \(l_j>a_i,r_j<a_{i+1}\) 的区间数量。 那么就是经典转化了。直接转换为二维数点问题即可。时间复杂度 \(O(tn\log V)\),离散化可以将 \( 阅读全文
posted @ 2024-12-18 17:46 长安一片月_22 阅读(13) 评论(0) 推荐(0) 编辑
摘要:\(NOIP\) 考前祈福。 实际上,每种伤害 \(d\) 打出的亵渎次数可以转化为: \[1+\max\limits_{i=0}^{\lceil\frac{n}{d}\rceil}(i[\sum\limits_{j=1}^{i}[sum(jd-d+1,jd)>0]=i]) \]其中 \(sum(i 阅读全文
posted @ 2024-11-29 17:46 长安一片月_22 阅读(6) 评论(0) 推荐(0) 编辑
摘要:最小值最大,考虑二分答案,问题转为判断最小值是否能 \(\ge x\)。 假如 \(a_i\ge x\),那我们肯定不管;假如 \(a_i<x\),那最好能让选择的区间 \(r\) 值更大,用优先队列维护即可。区间增幅可以用树状数组维护。 时间复杂度 \(O(n\log^2n)\)。 #includ 阅读全文
posted @ 2024-11-10 16:53 长安一片月_22 阅读(6) 评论(0) 推荐(0) 编辑
摘要:珂朵莉树+树链剖分+BIT+ST表。 阅读全文
posted @ 2024-08-21 20:40 长安一片月_22 阅读(16) 评论(0) 推荐(0) 编辑
摘要:难度在最近遇到的题里相对较高,在这里写一篇珂学题解。 (以下是学校给的部分分) \(20\%\):直接暴力枚举。 另外 \(20\%\):假如我们取 \(pre\),对于 \(pre<l\) 的,\(ans++\),明显二维偏序,树状数组或 \(cdq\) 即可,时间复杂度 \(O(n\log n) 阅读全文
posted @ 2024-08-15 20:22 长安一片月_22 阅读(39) 评论(1) 推荐(0) 编辑
摘要:给一篇题解。(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\)。 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况。 可以将直角梯形削去左下角,分成两部分考虑。 等直可以直接暴力插入区间,总个数 \(O(n)\)。 平行四边形可 阅读全文
posted @ 2024-07-31 21:21 长安一片月_22 阅读(13) 评论(0) 推荐(0) 编辑
摘要:俗话说的好,正难则反,既然不好想每一个子弹能打碎多少个木板,不如想每个木板被那枚子弹打碎。 然后就是显然的整体二分。由于可能木板不会被击碎,那些木板的分数会累加到最后一个子弹上,因此我们可以加一枚背锅弹,承担多余的分数。 时间复杂度 \(O((n+m)\log^2 m)\)。 #include<bi 阅读全文
posted @ 2024-05-04 10:51 长安一片月_22 阅读(5) 评论(0) 推荐(0) 编辑
摘要:发现实际上就是二维静态区间最大值,可以用整体二分维护。 时间复杂度 \(O((q+n^2)\log \max(a_{i,j})\log n^2)\)。 #include<bits/stdc++.h> #define ll long long using namespace std; const in 阅读全文
posted @ 2024-05-04 09:38 长安一片月_22 阅读(14) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示