4237: 稻草人 https://www.lydsy.com/JudgeOnline/problem.php?id=4237 分析: CDQ分治+单调栈。 首先按照x排序,每次分治,考虑左边对右边的贡献。CDQ的过程中,按照y从大到小排序。 代码: ...
分类:
其他好文 时间:
2018-09-27 23:56:53
阅读次数:
235
[TOC] 题目链接 "bzoj4237: 稻草人" 题解 暴力统计是n^2的 考虑统计一段区间对另一端的贡献 对于y值cdq分治,降调一维 对于当前两个分治区间统计上面那部分对下面那部分的贡献 对当前两区间x排序后,对上部分维护单增单调栈,得到距离当前点最近的比她低的点p 对于下面的区间维护一个上 ...
分类:
其他好文 时间:
2018-09-27 22:06:47
阅读次数:
130
传送门 解题思路 cdq分治,将位置看做一维,修改时间看做一维,权值看做一维,然后就转化成了三维偏序,用排序+cdq+树状数组。注意算删除贡献时要做两次cdq,分别算对前面和后面的贡献。 #include<iostream> #include<cstdio> #include<cstring> #i ...
分类:
其他好文 时间:
2018-09-25 01:20:53
阅读次数:
120
我们都做过一道题(?)货币兑换,是用cdq分治来解决不单调的斜率优化 现在它放到了树上.. 总之先写下来dp方程,$f[i]=min\{f[j]+(dis[i]-dis[j])*p[i]+q[i]\} ,j是i的祖先,dis[i]-dis[j]<=l[i]$ ,其中dis[i]表示1号点到i号点的距 ...
分类:
其他好文 时间:
2018-09-24 18:56:27
阅读次数:
159
看到全是线段树或者树状数组写法,就来提供一发全网唯一cdq分治三维偏序解法吧容易发现,这个题的查询就是对于每个区间l,r,查询有多少个修改区间li,ri与l,r有交集转化为数学语言,就是查询满足li<=r且ri>=l的修改个数一个二维偏序问题,但是我们发现,这是个动态插入的二维偏序问题_(:з」∠) ...
分类:
其他好文 时间:
2018-09-23 18:13:34
阅读次数:
161
传送门 CDQ分治 先三关键字排序 然后把第二关键字归并排序 在合并子区间时用 第三关键字的权值树状树组 算出子区间的答案 为什么可以这样搞呢 首先第一维已经有序 所以只要考虑左边对右边的影响 把第二维归并时 左子区间的一二关键字 全部小于 右子区间的一二关键字 所以也只要考虑左边对右边的影响 就用 ...
分类:
其他好文 时间:
2018-09-17 14:38:05
阅读次数:
146
题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决。 题目描述 有 nn 个元素,第 ii 个元素有 a_iai?、b_ibi?、c_ici? 三个属性,设 f(i)f(i) 表示满足 a_j \leq a_iaj?≤ai? 且 b_j \leq b_ibj?≤bi ...
分类:
其他好文 时间:
2018-09-12 12:02:20
阅读次数:
146
一道比赛的题... 设f[i]是已经走到i号点的值。 先要给第四维离散化、然后去重 第一维排序,第二维cdq分治,第三维cdq分治,第四维树状数组,找到满足j(x,y,z,w)<=i(x,y,z,w)的j,给i统计答案就可以。 然后在做的时候可以直接统计左区间内部答案、统计左区间给右区间造成的答案, ...
分类:
其他好文 时间:
2018-08-25 22:56:15
阅读次数:
208
求三维偏序 设三维为a,b,c。先对a排序,这样i的偏序就只能<i。 然而排序的时候需要三个维度都判断一遍,最后还要去重,不然会出现实际应该记答案的数出现在它后面的情况。 (排序用的函数里不要写类似于<=之类的东西啊..会出奇奇怪怪的问题的(RE)) 然后分治来做,我们在做区间[l,r]的时候,先去 ...
分类:
其他好文 时间:
2018-08-25 14:10:26
阅读次数:
195
题面 "题目传送门" 解法 同 "bzoj2716" ~~自己cdq写的还是丑啊,别人A掉了我T飞了~~ 代码 cpp include define inf 1 void chkmax(node &x, node y) {x = max(x, y);} template void chkmin(no ...
分类:
编程语言 时间:
2018-08-14 22:56:08
阅读次数:
281