
线段树
文章平均质量分 58
范艺杰
这个作者很懒,什么都没留下…
展开
-
D.Interval
题面 无。 类似51nod、博客链接。 解题思路 这种题目本质上先获得维护确定区间的方法,然后利用一种奇怪的方式扩展到任意子区间。 令ans[l,r]表示把[l,r]区间并起来的结果 我们先考虑对于确定的询问[l,r],ans[l,r]如何求解。我们可以枚举r然后维护这样的一个数组,∑i=lrres[i]\sum_{i=l}^rres[i]∑i=lrres[i]表示[l,r]的答案。其实对于确定的r而言,res[i]表示已经添加了[l+1,r]的区间后,加入l这个区间会获得的增量。考虑使用线段树维护,由于原创 2021-05-24 22:44:19 · 345 阅读 · 1 评论 -
CF1045G AI robots
题面 题目链接 解题思路 如果两个人i,j能够相互看到,我们不妨令x[i]<x[j],用j去统计i。 考虑离线的维护,我们扫描距离,当到x[i]时,将这个点插入,到x[i]+r[r]时,将其删除。当统计到i时,我们知道此时数据结构里的都是能够看到i的,我们要询问数据结构内有多少个j,q[i] - k <= q[j] <= q[i] + k,且x[i]-r[i]<=x[j]<=x[i]。用树套树维护即可。 复杂度O(nlog2n)O(nlog^2n)O(nlog2n)。 代码原创 2021-04-08 11:16:12 · 165 阅读 · 2 评论 -
51nod1488 帕斯卡小三角形
题目 题目链接 解题思路 首先有一个关键性质:我们一定是从某个点开始一直往下走,然后一直往右下走。 从(1,i)(1,i)(1,i)走到(x,y)(x,y)(x,y)的代价是sum[y]−sum[i]+(x−y+i)∗a[i]sum[y]-sum[i]+(x-y+i)*a[i]sum[y]−sum[i]+(x−y+i)∗a[i]。 由于查询的是整点,我们直接使用李超树维护下凸壳即可。 代码 #include <cstdio> #include <algorithm> #includ原创 2021-03-31 00:50:09 · 1385 阅读 · 2 评论 -
洛谷P7480 四月赛 Reboot from Blue
题目 题目链接 解题思路 首先油价是大于0的,油箱是无限的。因此我们不会从油价低的地方到油价高的地方去加油。我们可以根据每个地方油价的从高到低依次更新。 考虑某次到达点t后,其油价是v,那么对另一点s的贡献是v*abs(t-s)。这是两条直线。 考虑到我们是动态的确定点,并添加直线,因此维护下凸壳即可。 使用线段添加的李超树,复杂度O(nlogn)O(nlogn)O(nlogn)。 代码 #include <cstdio> #include <algorithm> #include原创 2021-04-05 20:25:19 · 562 阅读 · 1 评论