这几天学习了一下树链剖分,顺便写一下我的理解、
早上看了一下别人的讲解,云里雾里,终于算是搞懂了、
树链剖分是解决在树上进行插点问线,插线问点等一系列树上的问题
假如现在给你一棵树,然后没两条边之间有一条权值,有一些操作,1:x---y之间的最大权值是多少,2:改变x---y之间的权值
当前这样的操作有很多,如果直接用暴力的方法的话肯定不行,那么就要想一个好的方法,我们可以想一...
分类:
其他好文 时间:
2014-10-21 19:44:15
阅读次数:
263
///题意:给出一棵树,树的边上都有边权值,求从一点出发的权值和最大,权值为从一点出去路径上边权的最小值
# include
# include
# include
# include
using namespace std;
# define MAX 200010
struct node
{
int u,v;
int w;
};
struct node a[MAX];
_...
分类:
其他好文 时间:
2014-10-19 23:19:52
阅读次数:
187
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值
LCT的裸题!首先维护一个动态的最小生成树,然后每次加入边时删除两点间路径上权值最大的边!最后询问时直接求x到y链上的最大权值即可!水爆了!!
。。。好吧开玩笑的 真正的题解见http://blog.csdn.net/popoqqq/article/details/39755703
我只是闲得无聊水一发LC...
分类:
Web程序 时间:
2014-10-09 16:48:58
阅读次数:
262
题目大意:有一些骑士,他们每个人都有一个权值。但是由于一些问题,每一个骑士都特别讨厌另一个骑士。所以不能把他们安排在一起。求这些骑士所组成的编队的最大权值和是多少。
思路:首先貌似是有向图的样子,但是一个人讨厌另一个人,他们两个就不能在一起,所以边可以看成是无向的。
n个点,n条无向边,好像是一颗基环树。但其实这是一个基环树林,因为题中并没有说保证图一定联通。
然后就可以深搜了,处理...
分类:
其他好文 时间:
2014-10-08 17:19:05
阅读次数:
265
首先,我们要tarjan。。。 然后我们要缩点。。。注意,缩点的时候两个新建的点会有重边,需要判重正常的判重方法是bfs一边,但是我YY的比较奇葩,方法下面将。。。缩好点就变成了一个DAG,然后就类似树形DP的方法求最大权值链我是用记忆化搜索,当dfs某个点p时用数组vis记录一些东西:首先vis[...
分类:
其他好文 时间:
2014-10-06 23:54:12
阅读次数:
333
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值
NOIP2013 货车运输,几乎就是原题。。。只不过最小边最大改成了最大边最小。。。
首先看到最大值最小第一反应二分答案 但是二分答案O(kmlogn)明显做不了 这里我们考虑最小生成树
先生成一棵最小生成树,然后每次询问利用倍增LCA求出路径上的最大权值即可
本蒟蒻居然把LCA写挂了。。。 而且样例还过...
分类:
Web程序 时间:
2014-10-03 17:28:54
阅读次数:
275
题目大意:给定一个基环树林,每个点上有权值,要求选择一个权值和最大的点集,要求点集中的任意两个点之间不能直接相连
最大点独立集……考虑到n
对于每棵基环树,我们找到环上的一条边,设边上的两端点分别为u和v,f[i]为以i为根的子树在取i点的情况下的最大权值,g[i]为不取,于是我们有以下做法:
1.断掉这条边
2.u不取,v任意,我们以u为根跑一遍树形DP,取g[u]
3.v不取,u任意...
分类:
其他好文 时间:
2014-10-03 10:31:14
阅读次数:
192
点击打开链接
最大权匹配
KM算法
算法步骤:
设顶点Xi的顶标为a[i],顶点Yi的顶标为b[i]
ⅰ.初始时,a[i]为与Xi相关联的边的最大权值,b[j]=0,保证a[i]+b[j]>=w(i,j)成立
ⅱ.当相等子图中不包含完备匹配时,就适当修改顶标以扩大相等子图,直到找到完备匹配为止
ⅲ.修改顶标的方法
...
分类:
其他好文 时间:
2014-10-02 11:43:42
阅读次数:
141
UVA 11324 - The Largest Clique
题目链接
题意:给定一个有向图,要求找一个集合,使得集合内任意两点(u, v)要么u能到v,要么v能到u,问最大能选几个点
思路:强连通分量,构造出scc之后,缩点,每个点的权值是集合点个数,然后做一遍dag找出最大权值路径即可
代码:
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-30 13:55:39
阅读次数:
196
如果选了节点u,则不能选他的父节点和子节点,每个点有一个权值,求最大权值。#include #include #include using namespace std;#define maxn 6100#define maxm 15000struct Node{ int u,v,next;}e...
分类:
其他好文 时间:
2014-08-14 00:56:37
阅读次数:
163