CDQ分治
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
bzoj1492 [NOI2007]货币兑换Cash(斜率优化+CDQ分治)
这个大坑,终于填上了=,= 首先理论来自论文,点此查看 题目很长。。耐心读。。首先我们注意到这句话: **必然存在一种最优的买卖方案满足: 每次买进操作使用完所有的人民币;每次卖出操作卖出所有的金券。** 分析一下这句话:首先是卖出假设我们手中有一堆A券和一堆B券 选择在一些天数分天卖出,那么这些天中一定有一天,卖出同样比例的证券可以获得的钱最多,我们选择这一天全部卖出 一定比分天卖出更优原创 2017-08-11 19:27:51 · 370 阅读 · 0 评论 -
bzoj4237 稻草人(cdq分治+单调栈)
#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 200010inline char gc(){ static char buf[1<<16],*S,*T; if(S==T){T=(S=buf)+fread(...原创 2018-05-15 23:29:33 · 315 阅读 · 0 评论 -
bzoj2369 区间(贪心+dp+决策单调性+分治)
首先我们可以贪心地发现,肯定是取两个区间,对于包含的区间肯定不如选最大的那个,因此把被包含的都去掉,但是要注意更新答案哟。 好了,我们只剩下一堆l,r都单增的区间了,我们考虑区间i,他的最优决策为wi(wi< i),我们可以发现wi是单调不降的。于是我们可以分治+决策单调性来做。 复杂度O(nlogn)O(nlogn)原创 2018-04-24 19:47:19 · 515 阅读 · 0 评论 -
bzoj2253 [2010 Beijing wc]纸箱堆叠(cdq分治+dp)
其实就是求三维偏序最长链。 我们考虑cdq分治+dp。 注意要求严格小于,因此cdq分治时要注意一些细节的调整。 别忘了初始化!【哭泣】原创 2018-04-24 16:26:14 · 220 阅读 · 0 评论 -
bzoj4991 [Usaco2017 Feb]Why Did the Cow Cross the Road III(cdq分治/树套树)
恩,利用前两题的知识,我们化一化,发现是求一个二维的东西,果断树套树,线段树开不下gg,BIT+splay被卡常gg。试图优化T的更多gg 还是乖乖写cdq分治吧qaqCDQ分治原创 2018-04-24 15:16:07 · 288 阅读 · 0 评论 -
bzoj3262 陌上花开(树状数组套splay/cdq分治)
求三维偏序,可以树套树,第一维排序解决,第二维树状数组,第三维splay 或者cdq分治解决,要注意处理相同权值,细节较多。树状数组套splay#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;#...原创 2018-02-26 22:03:45 · 334 阅读 · 0 评论 -
bzoj3672 [Noi2014]购票(dp+斜率优化+点分治+cdq分治)
首先考虑如果是序列怎么做,比较明显的dp,dp[i]表示i走到1的最少花费,则 dp[i]=min{dp[j]+(dis[i]−dis[j])∗p[i]+q[i]|j<i,dis[i]−dis[j]<=li[i]}dp[i]=min\{dp[j]+(dis[i]-dis[j])*p[i]+q[i] |j<i,dis[i]-dis[j]<=li[i]\} 我们自然想到斜率优化,我就不推式子了qaq原创 2018-01-18 13:40:52 · 371 阅读 · 0 评论 -
bzoj3295 [Cqoi2011]动态逆序对(cdq分治+树状数组)
我们把删除操作倒着考虑,变成逐渐加数,每个数按加入的顺序给时间标号tit_i。(没被删过的数随便按顺序给时间标号1…n-m),每个点我们记录三个信息(ti,xi,yi)(t_i,x_i,y_i)分别表示时间标号,位置,数值,每一个点又都是一个询问,答案是加入这个点后增加的逆序对数。那么对于一个询问(t,x,y),他的答案就是满足 ti< t&&xi< x&&yi>y或者ti< t&&xi>x &&原创 2018-01-15 22:13:08 · 370 阅读 · 0 评论 -
bzoj2961 共点圆(cdq分治维护凸包,计算几何)
这题真是写的我有点绝望。菜不禁声。其实一开始是想拿KD tree树写的,听说能过,但是wa成狗??至今改不对gg。一个点(x0,y0)在圆(x,y)内,要求 (x−x0)2+(y−y0)2<=x2+y2(x-x_0)^2+(y-y_0)^2<=x^2+y^2 化简一下就是 x20+y20<=2x0x+2y0yx_0^2+y_0^2<=2x_0x+2y_0y 假设y0>0y_0>0,我们有y>原创 2018-01-15 10:30:14 · 890 阅读 · 1 评论 -
bzoj1176 [Balkan2007]Mokia(cdq分治+树状数组)
S据说一直都是0.。。好像是描述有误。。可以直接忽视了。 把每一个询问矩形容斥成4个,使得都是前缀矩形,然后cdq分治就好啦。注意树状数组不能每次O(N)大规模清空,这样复杂度其实是不对的。必须是O((mid-l+1)*logn)的清空。原来我以前写的都是假的orz原创 2018-01-14 15:57:53 · 299 阅读 · 0 评论 -
bzoj2683 简单题(K-D tree/CDQ分治)
二维数点。。。可以离线,怎么搞都行啦,是bzoj4066的弱化版。原创 2018-01-13 22:10:32 · 392 阅读 · 0 评论 -
suoj20 垃圾显示屏(cdq分治+树状数组)
二维平面,两种操作 1.给(x,y) +1 2.查询矩形(1,1,x,y)的权值和。 二维树状数组开不下,cdq分治,去掉一维,然后用树状数组维护。O(nlog2n)原创 2017-11-30 15:24:35 · 279 阅读 · 0 评论 -
bzoj2726 [SDOI2012]任务安排(cdq分治+斜率优化)
我们显然有n^2 dp f[i]=min{f[j]+(S+t[i]−t[j])∗w[j]}f[i]=min{f[j]+(S+t[i]−t[j])∗w[j]}f[i]=min\{f[j]+(S+t[i]-t[j])*w[j]\} 其中t[i]=∑j=1iT[i],w[i]=∑j=i+1nF[j]t[i]=∑j=1iT[i],w[i]=∑j=i+1nF[j]t[i]=\sum\limits_{j=...原创 2018-07-03 12:30:11 · 362 阅读 · 0 评论