分治
200815147
这个作者很懒,什么都没留下…
展开
-
点分治时间复杂度
前言:半年前学习的时候没有管这个问题,现在才搞懂。结论:点分治的时间复杂度为O(nlogn)O(nlogn)。大致证明:由于每次都是找数的重心,所以处理完一个大小为nn的树后,它的每个子树,大小都是最大为n2\frac{n}{2},所以最多分治lognlogn层,每层都是nn,故时间复杂度为O(nlogn)O(nlogn)。原创 2018-01-16 15:47:47 · 1812 阅读 · 0 评论 -
[BZOJ]3711: [PA2014]Druzyny 分治+线段树
Description体育课上,n个小朋友排成一行(从1到n编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组。第i个小朋友希望它所在的组的人数不多于d[i],不少于c[i],否则他就会不满意。在所有小朋友都满意的前提下,求可以分成的组的数目的最大值,以及有多少种分组方案能达到最大值。Solution先列出最简单的DP:fi=max{fj+1...原创 2019-03-15 13:44:35 · 367 阅读 · 0 评论 -
[LOJ]#2554. 「CTSC2018」青蕈领主 DP+分治NTT
Solution首先,连续段只会包含而不会相交,而且每个连续段向第一个包含它的连续段连边,就会形成一个树的结构。这个如果无法理解可以看LCA今年营员交流。然后设当序列为1,1,1...n1,1,1...n1,1,1...n的时候的答案为fnf_nfn,每个点的儿子个数为bib_ibi,那么ans=Πi=1nfbi+1ans=\Pi_{i=1}^n f_{b_i+1}ans=Πi=1nfb...原创 2019-02-27 08:05:05 · 215 阅读 · 0 评论 -
[BZOJ]2119: 股市的预测 分治+主席树+后缀数组
Description墨墨的妈妈热爱炒股,她要求墨墨为她编写一个软件,预测某只股票未来的走势。股票折线图是研究股票的必备工具,它通过一张时间与股票的价位的函数图像清晰地展示了股票的走势情况。经过长时间的观测,墨墨发现很多股票都有如下的规律:之前的走势很可能在短时间内重现!如图可以看到这只股票A部分的股价和C部分的股价的走势如出一辙。通过这个观测,墨墨认为他可能找到了一个预测股票未来走势的方法。进...原创 2019-01-17 22:38:12 · 197 阅读 · 0 评论 -
Codeforces 960G. Bandit Blues 分治NTT+第一类斯特林数+DP
题解:考虑最简单的DP,fi,jf_{i,j}fi,j表示i个数的排列,上升序列长度为j的方案数,考虑从大到小放数字,即最后一次放最小的数字,容易得到转移fi,j=fi−1,j−1+(i−1)fi−1,jf_{i,j}=f_{i-1,j-1}+(i-1)f_{i-1,j}fi,j=fi−1,j−1+(i−1)fi−1,j,这其实是第一类斯特林数的递推式。枚举n放在哪里,答案为∑i=1n...原创 2019-01-02 17:26:17 · 146 阅读 · 0 评论 -
[BZOJ]5125: [Lydsy1712月赛]小Q的书架 DP+决策分治
题解:fi,jf_{i,j}fi,j表示前iii个数分成jjj段的最小代价,显然对于同一个jjj,决策端点是单调右移的,所以可以用分治来优化转移。solve(j,l,r,L,R)solve(j,l,r,L,R)solve(j,l,r,L,R)表示求出fl,jf_{l,j}fl,j到fr,jf_{r,j}fr,j,这些状态的决策点为[L,R][L,R][L,R]。求出midmidmid,暴力...原创 2018-12-26 14:18:47 · 217 阅读 · 1 评论 -
4836: [Lydsy1704月赛]二元运算 分治 fft
题解:分治fft我都不会……好弱啊……其实可以直接对值进行分治,这样的话就可以巧妙的解决要进行哪一个运算的问题。代码:#include<bits/stdc++.h>using namespace std;#define LL long long#define pa pair<int,int>const double pi=acos(-1.0);co...原创 2018-04-22 19:33:48 · 206 阅读 · 0 评论 -
51nod 1555 布丁怪 分治
布丁怪这一款游戏是在一个n×n 的矩形网格中进行的,里面有n个网格有布丁怪,其它的一些格子有一些其它的游戏对象。游戏的过程中是要在网格中移动这些怪物。如果两个怪物碰到了一起,那么他们就会变成一个更大的怪物。(谁叫他们是布丁呢?)据统计,如果每一行每一列都只有一个布丁怪,那么这样的布局是比较吸引玩家的。所以为了产生多种多样的有趣布局,我们会从一个 n×n 的有趣的地图中选取一个k×k (1≤...原创 2018-03-20 18:28:54 · 289 阅读 · 0 评论 -
4456: [Zjoi2016]旅行者 分治+dijkstra
Description 小Y来到了一个新的城市旅行。她发现了这个城市的布局是网格状的,也就是有n条从东到西的道路和m条从南到北的道路,这些道路两两相交形成n×m个路口 (i,j)(1≤i≤n,1≤j≤m)。她发现不同的道路路况不同,所以通过不同的路口需要不同的时间。通过调查发现,从路口(i,j)到路口(i,j+1)需要时间 r(i,j),从路口(i,j)到路口(i+1,j)需要时间c(i,j)。...原创 2018-03-19 22:08:37 · 299 阅读 · 0 评论 -
3745: [Coci2015]Norma 分治
题解:分治的一般套路,递归处理左右区间,然后算出过midmidmid的答案,然后对于怎么算,一般都是分类讨论一下,对于这道题目,枚举左端点iii,然后根据最大最小值的位置进行分类讨论和预处理,推一大堆式子,具体怎么推可以看CQzhangyu的博客。代码:#include<bits/stdc++.h>using namespace std;#define LL long ...原创 2018-03-19 21:58:57 · 210 阅读 · 0 评论 -
2458: [BeiJing2011]最小三角形 分治
Description Xaviera现在遇到了一个有趣的问题。 平面上有N个点,Xaviera想找出周长最小的三角形。 由于点非常多,分布也非常乱,所以Xaviera想请你来解决这个问题。 为了减小问题的难度,这里的三角形也包括共线的三点。题解:分治,利用分治得到的答案缩小选点的范围,时间复杂度未知。代码:#includeusing namespace std;#de原创 2018-01-09 10:32:31 · 421 阅读 · 0 评论 -
1468: Tree 点分治
Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K题解:经典点分治……以前的模板好像有一点问题,这次加了个gettot函数,相当于多了个常数。代码:#includeusing namespace std;#define LL long long#define pa pairconst int Maxn=40010;原创 2018-01-17 13:39:50 · 217 阅读 · 0 评论 -
[Codeforces] 888G. Xor-MST Boruvka算法/分治+01trie
Solution经典的异或最小生成树,我所知道的有两个做法,分别介绍一下。1、最小生成树的Boruvka算法。这个最小生成树算法大概流程是把开始的nnn个点视为nnn个连通块,然后每次每个连通块找到一条连向其他连通块的权值最小的边并连起来,这样每次至少减少一半的联通块数,复杂度为O(nlogn)O(n\log n)O(nlogn)。那么在这题套用这个算法的话,可以建一个所有数的010101...原创 2019-04-05 12:05:58 · 495 阅读 · 0 评论