![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【算法】CDQ分治与整体二分
文章平均质量分 80
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3262】陌上花开
【题目链接】点击打开链接【思路要点】直观地来想,本题可以先排序一维,然后使用二维数据结构(树套树,KD-Tree)来解决。时间复杂度\(O(NLog^{2}N)\)或\(O(N\sqrt{N})\)。或者也可以用CDQ分治来解决本题,时间复杂度同样为\(O(NLog^{2}N)\)。其中树套树的空间复杂度高达\(O(NLog^{2}N)\),粗糙的实原创 2018-01-16 10:34:49 · 440 阅读 · 0 评论 -
【LOJ2554】「CTSC2018」青蕈领主
【题目链接】点击打开链接【思路要点】值域连续的区间的交和并均为值域连续的区间,因此一个合法输入应当能够构成一个树形结构。考虑一个节点的子树,其对应的区间值域连续,且在后续的考虑中,我们会避免使其出现在更大的连续区间中,因此我们可以等效地将其看做一个数。因此,记 fif_ifi 表示长度为 i+1i+1i+1 的,去掉最后一个元素后不存在非平凡连续区间的排列个数, sis_i...原创 2019-04-19 21:25:43 · 739 阅读 · 2 评论 -
【LOJ2983】「WC2019」数树
【题目链接】点击打开链接【思路要点】op=0op=0op=0 ,算一算两棵树的公共边数即可。时间复杂度 O(N)O(N)O(N) 或 O(NLogN)O(NLogN)O(NLogN) 。op=1op=1op=1 ,考虑枚举蓝树上的一个边集 SSS ,强制红树上同样存在这些边,计算将剩余 N−∣S∣N-|S|N−∣S∣ 个联通块连成一棵树的方案数,更新答案。上述算法中,枚举蓝...原创 2019-03-31 21:13:53 · 622 阅读 · 0 评论 -
【校内训练2019-03-17】胖
【思路要点】离线操作,我们需要求出各城市破产的时间来回答询问。考虑二分答案,我们需要能够回答形如 “ xxx 城市在 yyy 时刻遭受的损失” 的问题。对于一个修改,我们可以将其拆分为在 O(LogV)O(LogV)O(LogV) 个节点处向下传导至多 O(LogV)O(LogV)O(LogV) 层的损失,在询问时我们只需查询其至多 O(LogV)O(LogV)O(LogV) 个祖先对对...原创 2019-03-19 14:34:48 · 195 阅读 · 0 评论 -
【CodeForces553E】Kyoya and Train
【题目链接】点击打开链接【思路要点】考虑一个暴力 dpdpdp ,记 dpi,jdp_{i,j}dpi,j 表示在点 iii 处,时刻 jjj 最优决策的期望花费。则有dpi,j={x+dist(i,N)j>T0i=N,j≤TMini⇒e∈E{costi,e+∑k=1tpi,e,k∗dpe,j+k}i≠N,j≤Tdp_{i,j}=\left\{\begin{a...原创 2018-11-19 12:30:06 · 422 阅读 · 0 评论 -
【省内训练2018-09-13】Link Cut Digraph
【思路要点】 首先,我们将问题转化一下,我们希望求出每条边连接的两个点在什么时候开始能够相互到达。 对于此类连通性问题,考虑整体二分: 令 solve(l,r,S)solve(l,r,S)solve(l,r,S) 表示已经确定 SSS 中的边连接的两个点在第 lll 条边到第 rrr 条边中的某一条边被加入时开始变得连通,并在加入过第 111 条边到第 l−1l−1l-1 条...原创 2018-09-13 20:39:56 · 460 阅读 · 0 评论 -
【省内训练2018-09-15】IOI Problem
【思路要点】 我们先来考虑这个问题在序列上的形式。 我们要将序列分成 kkk 段,使得每一段所有数到其中位数的距离之和最小。 由于代价函数 www 满足四边形不等式 w(i,k)+w(j,l)≤w(i,l)+w(j,k) (i≤j≤k≤l)w(i,k)+w(j,l)≤w(i,l)+w(j,k) (i≤j≤k≤l)w(i,k)+w(j,l)≤w(i,l)+w...原创 2018-09-17 10:42:32 · 567 阅读 · 0 评论 -
【LOJ2320】「清华集训 2017」生成树计数
【题目链接】点击打开链接【思路要点】由于场。时间复杂度\(O(DC^2+D^2+TD^2LogN)\),其中\(C=165,D=146\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXM = 65;const int MAXN = 262144;const int MAXLOG = 20;const ...原创 2018-06-24 20:43:36 · 1805 阅读 · 3 评论 -
【BZOJ3456】城市规划
【题目链接】点击打开链接【思路要点】令\(f_i\)为当\(N=i\)时,原问题的答案。显然有\(f_1=1\)。当\(i>1\),考虑用\(i\)个点的简单无向图的个数减去\(i\)个点的简单无向图中不连通的个数。考虑经典思路:枚举1号节点所在连通块的大小\(j\),则有\(f_i=2^{\binom{i}{2}}-\sum_{j=1}^{i-1}f_j*\binom{i-1}{j-1}*...原创 2018-05-18 14:51:18 · 410 阅读 · 0 评论 -
【BZOJ4700】适者
【题目链接】点击打开链接【思路要点】显然的一点是可以将各点的\(D_i\)替换为\(\lfloor\frac{D_i-1}{ATK}\rfloor+1\),即需要的攻击次数。首先考虑没有秒杀怎么做,我们需要确定一个攻击顺序,依次攻击并消灭敌人。如果我们已经确定了一个顺序,如果交换\(i\)和\(i+1\)能够使得方案更优,那么应当有\(A_{i+1}*D_i>D_{i+1}*A_i\),即\...原创 2018-03-26 16:06:32 · 622 阅读 · 0 评论 -
【BZOJ2253】纸箱堆叠
【题目链接】点击打开链接【思路要点】树套树,KDTree,CDQ分治都能做。CDQ分治的话需要注意这里要求“严格小于”,取中点时应当保证左右两边第一维坐标不会相等。时间复杂度\(O(NLog^2N)\)或\(O(N\sqrt{N})\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;t...原创 2018-03-25 18:07:12 · 390 阅读 · 0 评论 -
【BZOJ3963】【WF2011】MachineWorks
【题目链接】点击打开链接【思路要点】按照\(G_i\)对机器排序,斜率优化DP即可。时间复杂度\(O(NLog{N})\)。也可以按\(D_i\)排序,用Splay或CDQ分治支持询问。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005struct info {long long d, p, r, ...原创 2018-03-25 17:01:21 · 267 阅读 · 0 评论 -
【BZOJ3110】【ZJOI2013】K大数查询
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】//树套树#include<bits/stdc++.h>using namespace std;#define MAXN 50005#define UTRAL 16000005struct Node {int lc,rc,tag;long long len,sum;};int n,m,N,size,BIT[MAX...原创 2018-03-23 20:50:19 · 164 阅读 · 0 评论 -
【CodeForces438E】The Child and Binary Tree
【题目链接】点击打开链接【思路要点】按照题解的做法,我们可以通过多项式开根、多项式求逆来求解本题。(但是我不会,也不想学)我们来考虑一种比较容易的做法,首先:$$dp_s=\sum_{c_i+j+k=s}dp_j*dp_k$$也就是说,我们只有知道了\(s\)较小的\(dp\)值,才能计算出\(s\)较大的\(dp\)值。考虑分治,对于区间\([L,R]\),令\(Mid=\lfloor\frac...原创 2018-03-13 18:28:05 · 243 阅读 · 0 评论 -
【BZOJ3672】【UOJ7】【NOI2014】购票
【题目链接】BZOJUOJ【思路要点】令\(f_i\)表示从\(i\)出发到根节点的最小花费,\(s_i\)表示根节点到节点\(i\)的路径长度之和。那么,显然有方程:$$f_i=min_{s_i-l_i≤s_j}\{f_j+(s_i-s_j)p_i+q_i\}$$$$f_i=min_{s_i-l_i≤s_j}\{f_j-s_jp_i\}+s_ip_i+q_i$$其中\(j\)是\(i\)的一个祖...原创 2018-03-01 15:24:13 · 319 阅读 · 0 评论 -
【BZOJ3295】【CQOI2011】动态逆序对
【题目链接】点击打开链接【思路要点】树套树空间不够,所以CDQ分治就行了。时间复杂度\(O(MLog^2N)\)。【代码】#include<bits/stdc++.h>using namespace std; #define MAXN 100005struct info {int time, pos, value, ans; }; bool cmp(info x, info y...原创 2018-02-28 14:38:22 · 153 阅读 · 0 评论 -
【LOJ3161】「NOI2019」I 君的探险
【题目链接】点击打开链接【思路要点】以下是笔者在考场上的做法,与标准解法存在一定区别。首先我们可以先讨论一下 A,BA,BA,B 两类数据的做法。对于 AAA 类数据,对每个洞穴以 12\frac{1}{2}21 的概率进行操作,此后观察一遍所有的洞穴,将同色的洞穴归为一类,递归处理每一类即可。对于 BBB 类数据,我们本质上需要计算每个节点 iii 的父节点的位置。点亮...原创 2019-07-31 14:29:33 · 1486 阅读 · 0 评论