E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
————点分治
树链剖分之点剖分(
点分治
)讲解
当一个问题可以分解成小问题时,我们一般可以采用分治算法,比如最简单的快速排序,就是分治算法的一个典型的应用。 那么处理树的问题时,假设求解满足条件的点对儿个数,对于一个树来说,两个点对儿的存在只能有两种情况,就是点对之间的路径过根和不过根,那么对于不过根的情况递归做,对于一棵树只考虑过根的情况,计算就行了。 以一个基础题为例子bzoj 2152 http://61.187.1
·
2015-11-13 20:50
树
POJ 1987 BZOJ 3365 Distance Statistics 树的分治(
点分治
)
题目大意:(同poj1741,刷一赠一系列) CODE: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define MAX 40010 #define INF 0x3f3f3f3f using namespace st
·
2015-11-13 19:10
poj
POJ 1741 树上
点分治
题意: 求树上的距离小于等于K的点对个数 题解: 树分治论文题。 需要者请移步qzc论文~ View Code 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio&g
·
2015-11-13 15:08
poj
Free tour II(
点分治
)
http://www.spoj.com/problems/FTOUR2/ 先前看了一会题解就自己yy出来了。。。对拍过后交tle。。。。。。。。。。。。。。。。。。 自己造了下大数据。。。。。。。。tle。。。。。。。。。。。。。。。。。。。。。。。。。 what? 首先来看经过当前点的路径: 设g[x,i]表示第x个孩子能得到的路径上黑点最多有i个(注意是最多)的最大长度,因为遍历的节
·
2015-11-13 11:28
free
【BZOJ】2152: 聪聪可可(
点分治
)
http://www.lydsy.com/JudgeOnline/problem.php?id=2152 随便点分。。。。。 只是我在考虑一个地方逗乐。。 当路径长度mod3=0的点数直接乘起来就好。。。。我当时sb了。。。。。。。。。。。。。。。这样能计数所有对数。。 #include <cstdio> #include <cstring> #include
·
2015-11-13 11:27
ZOJ
【BZOJ】1468: Tree(
点分治
)
http://www.lydsy.com/JudgeOnline/problem.php?id=1468 分治真是一门高大上的东西。。。 好神。。。 树分治最好资料是:qzc的《分治算法在树的路径问题中的应用》 我来说说自己的理解: 点分=找重心+分治 找重心尤为重要,因为这关系到时间复杂度。 对于递归式 $$T(n)=aT(n/b)+O(D(n))$$ 这类递归式,如果能保证每
·
2015-11-13 11:26
tree
BZOJ 2599 [IOI2011]Race【Tree,
点分治
】
点分治
,这道题目和POJ 2114很接近,2114是求是否存在长度为K的边,但是那个K比较大。但是这道题目的K比之小了10倍。 1. 用V[i]表示到当前树根root的
·
2015-11-13 04:05
tree
树的直径、树的重心与树的
点分治
树的直径 树的直径(Diameter)是指树上的最长简单路。 直径的求法:两遍搜索 (BFS or DFS) 任选一点w为起点,对树进行搜索,找出离w最远的点u。 以u为起点,再进行搜索,找出离u最远的点v。则u到v的路径长度即为树的直径。 简单证明: 如果w在直径上,那么u一定是直径的一个端点。反证:若u不是端点,则从直径另一端点到w再到u的距离比直径更长,与假设矛盾。 如果w不在
·
2015-11-13 03:10
树
hdu 4670 树的
点分治
思路:首先当然是要用树的
点分治
了。根节点为root,那么经过root的合法路径数求出来这题就解决了。因为我们可以用分治枚举根,最后将所有根的路径数加起来就是结果。
·
2015-11-13 02:05
HDU
POJ 1741 Tree【Tree,
点分治
】
树上的算法真的很有意思……哈哈。 给一棵边带权树,问两点之间的距离小于等于K的点对有多少个。 将无根树转化成有根树进行观察。满足条件的点对有两种情况:两个点的路径横跨树根,两个点位于同一颗子树中。 如果我们已经知道了此时所有点到根的距离a[i],a[x] + a[y] <= k的(x, y)对数就是结果,这个可以通过排序之后O(n)的复
·
2015-11-13 02:59
tree
CF 322E - Ciel the Commander 树的
点分治
树链剖分可以看成是树的边分治,什么是
点分治
呢?
·
2015-11-13 00:10
command
CF 293 E Close Vertices (树的分治+树状数组)
同样 还是
点分治
,考
·
2015-11-12 18:56
close
求x^0+x^1+x^2+.......x^n mod p; x,n,p<=10^9
方法三:有
点分治
的味道..
·
2015-11-12 14:09
Just a Note~
持续更新 Train 1 搜索 Train 2 动态规划 Train 3 组合数学 Train 4
点分治
Train 5 最大流 Train 6 群论/
·
2015-11-11 17:34
Note
Free tour II 基于树的
点分治
题目大意 一颗含有N个顶点的树,节点间有权值, 节点分为黑点和白点.问题是 找一条黑点数量不超过K个的最大路径. 解题思路: 因为路径只有 过根节点以及不过根节点, 所以我们可以通过找寻树重心分治下去. 问题就退化成了处理: 对于当前以 x 为根的树, 其最大路径 对于X的所有直接子节点, 定义函数 G( I, J ) 表示子节点 I为根的树
·
2015-11-11 17:01
free
whu 1471 All Your Bases 暴力删边
看完题没敢想 O(N^2)的算法,最初想建模求最小割,后面又想到
点分治
,但是O(N^2)的空间复杂度。。。。。 其实题目给了10S, 将所有边从小到大排序后, 尝试删除该边,若此边两端
·
2015-11-11 11:34
you
POJ 1987 Distance Statistics(树的
点分治
)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 上场CF的C题是一个树的分治。。。 今天刚好又看到一题,就做了下 题意:一棵树,问两个点的距离<=k的点对数目。 http://poj.org/problem?id=198
·
2015-11-11 10:49
poj
SPOJ 1825 Free tour II(树的
点分治
)
题目链接:http://www.spoj.com/problems/FTOUR2/ 题意:给出一棵树,树上的节点为白色或黑色,树上的边有权值。求一条路径,包含的黑色节点不超过K的情况下使得长度最长? 思路:一条路径要么从根节点过要么不经过根节点,基于这样的思路我们可以使用分治。令G(i,j)表示根的i孩子所在子树中,从i向下最多经过j个黑色节点可以得到的最长路。那么对于根的任意两个孩子i1和i
·
2015-11-11 03:45
free
CF 321C Ciel the Commander(树的
点分治
)
题目链接:http://codeforces.com/problemset/problem/321/C 题意:给出一棵树,为每个节点分配一个大写字母A到Z。满足对于任意两个字母相同的节点u和v,uv的路径上至少存在一个节点的字母是大于uv的字母的(A最大)。 思路:每次找到当前树的重心,将其分成若干个子树继续进行DFS。总深度大于26则无解。否则每个树的字母为其深度。 vec
·
2015-11-11 03:44
command
POJ 1741 Tree(树的
点分治
)
(2)树的
点分治
:不知道标准的定义。我的理解就是
·
2015-11-11 03:44
tree
BZOJ2599: [IOI2011]Race
裸的
点分治
自从前两天狂敲了一个广搜
点分治
之后 敲个
点分治
如鱼得水啊 总觉得自己的写法会被奇怪数据卡到O(n2) 幸好IOI数据比较仁慈… 调试小结: 1. now、po不分 2.
·
2015-11-08 16:18
RAC
POJ 1741 Tree (树的
点分治
入门)
Tree view code#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 10010; int n,
·
2015-11-07 15:13
tree
POJ1741--Tree (树的
点分治
) 求树上距离小于等于k的点对数
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12276 Accepted: 3886 Description Give a tree with n vertices,each edge has a length(p
·
2015-11-07 12:52
tree
跨越国度
题意: 给你一颗带边权树 及每个点的颜色 和m个操作 每次操作更改一个的颜色 求每次操作后同色最近点对的距离 题解:
点分治
对于每个重心维护x个堆 x为这个重心管辖范围内的不同颜色数
·
2015-11-02 18:41
点分治
思路:
点分治
模板题。
·
2015-11-02 12:31
BZOJ 2152 聪聪可可(
点分治
)
点分治
...搞一搞就行了... --------------------------------------------------------------- #include<
·
2015-11-02 12:23
ZOJ
BZOJ3648 : 寝室管理
首先树的话直接
点分治
+树状数组$O(n\log^2n)$搞定 环套树的话,先删掉多余的边(a,b) 然后变成了一棵树,直接
点分治
然后在树上找到a到b的路径,将每一棵子树中的点的
·
2015-10-31 16:31
ZOJ
BZOJ3672 : [Noi2014]购票
设d[i]表示i到1的距离 f[i]=w[i]+min(f[j]+(d[i]-d[j])*v[i])=w[i]+d[i]*v[i]+min(-d[j]*v[i]+f[j]) 对这棵树进行
点分治
,每次递归时的根为
·
2015-10-31 11:50
ZOJ
BZOJ1767 : [Ceoi2009]harbingers
设d[i]表示i到1的距离 f[i]=w[i]+min(f[j]+(d[i]-d[j])*v[i])=w[i]+d[i]*v[i]+min(-d[j]*v[i]+f[j]) 对这棵树进行
点分治
,每次递归时的根为
·
2015-10-31 11:50
bing
POJ 1741 Tree(
点分治
)
点分治
...模板题吧..只要理解了,实现并不难,随便搞搞...
·
2015-10-31 10:59
tree
POJ 2114 Boatherds【Tree,
点分治
】
求一棵树上是否存在路径长度为K的点对。 POJ 1714求得是路径权值<=K的路径条数,这题只需要更改一下统计路径条数的函数即可,如果最终的路径条数大于零,则说明存在这样的路径。 刚开始我以为只要在分治过程中出现过长度为K的就算是找到了,其实不然,因为可能是相同子树里面的两个结点,这个结果显然是错误的。 #include <cstdio> #include
·
2015-10-27 16:08
tree
计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点
平面最近点对,即平面中距离最近的两
点分治
算法:intSOLVE(intleft,intright)//求解点集中区间[left,right]中的最近点对{ doubleans; //answer
RainMark
·
2015-10-24 12:00
点分治
模板
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<queue> 6 #include<cstring> 7 #define PAU putchar(' ') 8 #d
·
2015-10-21 12:16
模板
HDU 4871 Shortest-path tree (树分治之
点分治
最短路径树问题)
题目大意:给出一个连通的无向图,然后找一颗生成树,生成树满足点1到每个点的书上距离都是原图中的最短路,然后在满足最短路的条件下,点1到每个点的树上路径的序列字典序最小找出这个树之后,给出K询问树上有K个结点的路径的最大边权值,以及这样的最大边权值的路径的方案数大致思路:首先spfa取得所有的1到其他点的最短距离然后按照字典序进行dfs找出最短路径树之后就是裸的树分治的问题了用dis[i]表示i个结
u013738743
·
2015-10-15 00:00
tree
HDU
shortest-path
点分治
4871
HDU 4812 D Tree (树分治之
点分治
)
题目大意:给出一棵树,顶点数n #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; con
u013738743
·
2015-10-14 11:00
tree
HDU
D
点分治
4812
POJ 1741 Tree (树分治之
点分治
)
题目大意:给出一棵树,点数n #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; cons
u013738743
·
2015-10-13 23:00
tree
poj
点分治
1741
spoj1825 Free tour II
点分治
给一颗带权树,这颗树上每个点有一个点色黑色或白色现在要求经过不超过K个点的最长路径长度是多少将无根树转换为有根树,每次只考虑一个点,计算经过该点不超过K个点的最长路径长度。考虑完该点之后把该点删掉。然后从子树中再找一点。一直这样下去。每次找重心。最多有log2n层,然后每层跑个O(nlog2n)是可以接受的要考虑到怎么计算经过该点不超过K个点的最长路径长度。记录对于点u引出的儿子节点集合假设为T(
CHCXCHC
·
2015-10-12 18:00
点分治
树分治
POJ 1741 Tree 树
点分治
题意:给定一颗n(n #include #include #include usingnamespacestd; typedeflonglongLL; constintMAXN=10000+100; structEdge{ intto,next,w; Edge(){} Edge(int_to,int_next,int_w):to(_to),next(_next),w(_w){} }e[MAXN%d
CHCXCHC
·
2015-10-05 12:00
树
分治
poj(2299)——Ultra-QuickSort(归并排序求逆序数)
思路:今天重新学习了一下归并排序,这个排序是增量的思想,但是又有
点分治
+递归。至于怎样用归并来求逆序数的对数呢?
ACMer_hades
·
2015-10-01 15:14
分治算法
HDOJ 5416 CRB and Tree
点分治
的做法很好想,但是会超时。对于这个题,找一个点dfs,统计异或值的个数就行了。。
blankcqk
·
2015-08-25 10:00
【codechef】 Prime Distance On Tree【求树上路经长度为i的路径条数】【
点分治
+FFT】
传送门:【codechef】PrimeDistanceOnTree
点分治
+FFT水题……竟然n*n爆int没发现……而且NTTTLE,FFT跑的超级快……my code:#include usingnamespacestd
u013368721
·
2015-08-05 10:00
【HDU】5314 Happy King【动态树(
点分治
)】
传送门:【HDU】5314HappyKing算法分析:
点分治
,子树去重类可做。对于一个重心,取出所有路径按照最大值排序,扫下最小值,插入到线段树里维护个数,双指针扫扫解决。
u013368721
·
2015-07-27 16:00
POJ 1741 Tree DP+树的
点分治
题意:链接方法:树的
点分治
+DP解析:男八之一听完封禺讲完来刷然后发现有些地方是需要注意的!
wzq_QwQ
·
2015-07-22 14:00
dp
poj
HDU 5016 Mart Master II (树上
点分治
)
题目地址:HDU5016先两遍DFS预处理出每个点距最近的基站的距离与基站的编号。然后找重心,求出每个点距重心的距离,然后根据dis[x]+dis[y] #include #include #include #include #include #include #include #include #include usingnamespacestd; #defineLL__int64 #defin
u013013910
·
2015-07-21 19:00
编程
ACM
算法与数据结构
树上点分治
HDU 4871 Shortest-path tree (最短路+树上
点分治
)
题目地址:HDU4871先用最短路求出根节点到其它各点的最短距离,然后利用最短距离DFS一下构造出最短路树,然后剩下的就是在构造出来的这棵树上做树分治,很简单的树分治。代码如下:#include #include #include #include #include #include #include #include #include #include usingnamespacestd; #d
u013013910
·
2015-07-12 09:00
遍历
ACM
算法与数据结构
树上点分治
HDU 4812 D Tree (树上
点分治
)
题目地址:HDU4812这题是13年南京区域赛的现场题。树分治思想。树分治的过程中记录下每个子树的所有到达根的路径的积,用best记录下每个积的最小端点,然后再枚举当前子树的每个积,然后用逆元的方法求出当积为k时所需要的另一个端点值,并更新答案。代码如下:#include #include #include #include #include #include #include #include
u013013910
·
2015-07-11 11:00
编程
ACM
算法与数据结构
树上点分治
SPOJ 1825 FTOUR2 - Free tour II (树上
点分治
)
题目地址:SPOJ1825树分治的题果然除了模板题就是金牌题啊。。。这题是一道论文题,想了好长时间。。。。终于过了,,,,注意一个坑点,如果权值全部为负的话,是可以不选任意一条边的,这样权值为0。。。也就是说初始值要设为0。。。具体看漆子超的论文《分治算法在树的路径问题中的应用》。。代码如下:#include #include #include #include #include #include
u013013910
·
2015-07-10 15:00
编程
ACM
算法与数据结构
树上点分治
BZOJ 3295 [Cqoi2011]动态逆序对 树状数组套线段树
题意:链接方法:树状数组套线段树解析:这题基本上写的都是什么CDQ
点分治
,主席树之类的,然而这我都并不会,所以写了一发平衡树套线段树想卡时卡过去,然而我并没有得逞,T的不要不要的,这里用平衡树套线段树的方法参见我的题解
wzq_QwQ
·
2015-07-09 14:00
CodeChef PrimeDST【
点分治
】【FFT】
/*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #definemake(a,b)make_pair(a,b) #definefifirst #define
Lethelody
·
2015-07-09 08:00
BZOJ4016【最短路】【
点分治
】
/*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #definemake(a,b)make_pair(a,b) #definefifirst #define
Lethelody
·
2015-07-08 18:00
上一页
6
7
8
9
10
11
12
13
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他