一开始我还天真的一遍DFS求出最长链以为就可以了不过发现存在有向环,即强连通分量SCC,有向环里的每个点都是可比的,都要分别给个集合才行,最后应该把这些强连通分量缩成一个点,最后保证图里是 有向无环图才行,这个时候再找最长链,当然缩点之后的scc是有权值的,不能只看成1,缩点完了之后,用记忆化搜索D...
分类:
其他好文 时间:
2014-08-10 18:17:30
阅读次数:
199
题意:求两个点的最近公共祖先。
1A#include
#include
#include
#include
#define maxn 100010
using namespace std;
int fa[maxn],lev[maxn],pre[maxn],c1,c2;
vector son[maxn];
bool dfs(int rt,int obj)
{
for(int i...
分类:
其他好文 时间:
2014-08-10 15:42:40
阅读次数:
261
/*
最大权闭合图模板类型的题,考验对知识概念的理解。
题意:现在要辞退一部分员工,辞退每一个员工可以的到一部分利益(可以是负的),并且辞退员工,必须辞退他的下属,求最大利益和辞退的最小人数。
最大权闭合图模板类型。
求出最大权后沿着源点s,dfs到的点就为最小的人数。
证明/*
转载:利用一个经典的trick:多关键字
> 建图前,对所有b[i],执行变换b[i]=b[i]*10000-1,然后...
分类:
其他好文 时间:
2014-08-10 15:42:20
阅读次数:
237
题意要求一棵树上,两个点的最近公共祖先 即LCA现学了一下LCA-Tarjan算法,还挺好理解的,这是个离线的算法,先把询问存贮起来,在一遍dfs过程中,找到了对应的询问点,即可输出原理用了并查集和dfs染色,先dfs到底层开始往上回溯,边并查集合并 一边染色,这样只要询问的两个点均被染色了,就可以...
分类:
其他好文 时间:
2014-08-10 15:39:20
阅读次数:
215
匈牙利算法int dfs(int x){ for(int i=1;i<=m;i++){ if(!used[i]&&g[x][i]){ used[i]=1; if(link[i]==-1||dfs(link[i])){ ...
分类:
其他好文 时间:
2014-08-10 12:34:10
阅读次数:
227
A.UVALive 6661 题意从1~N中选k个数,和为s的方案数 第一眼搜索,估计错状态量,又去yydp...浪费大量时间 数据很小的,状态数都不会超过2^N...直接dfs就过了//state二进制表示选取的数#include #include #include #include usi...
分类:
其他好文 时间:
2014-08-10 01:36:39
阅读次数:
336
题目大意:
两个人往一个空的字符串里填单词,每一次只能填一个,而且填完之后要是给出的N个字符串的前缀。
思路分析:
先用给出的所有单词建字典树。
然后从根节点开始dfs。
win [x] 表示踩在x节点上是否有必胜策略
lose [x] 表示踩在x节点上是否有必败策略。
然后是博弈的过程。
如果先手有必胜和必败的策略,那么他可以一直输到k-1
如果只有必胜策略。那么只有当...
分类:
其他好文 时间:
2014-08-09 21:32:19
阅读次数:
255
知识点:dfs(深度优先搜索)题解:基本的dfs搜索判断可行性问题。一般的dfs搜索,如果不加剪枝,复杂度是指数级的,所以必须要能发掘出优秀的剪枝条件;在本题中,一般有如下剪枝:①:所有线段的长度之和必须为4的倍数;②:搜索之前,把所有线段按从大到小排序,因为长度越长,在拼凑时的灵活度就越低;③:当...
分类:
其他好文 时间:
2014-08-09 18:25:48
阅读次数:
249
题目链接:Codeforces 455C Civilization
题目大意:给定N,M和Q,N表示有N个城市,M条已经修好的路,修好的路是不能改变的,然后是Q次操作,操作分为两种,一种是查询城市x所在的联通集合中,最长的路为多长。二是连接两个联通集合,采用联通之后最长路最短的方案。
解题思路:因为一开时的图是不可以改变的,所以一开始用dfs处理出各个联通集合,并且记录住最大值,然后就...
分类:
其他好文 时间:
2014-08-09 13:30:57
阅读次数:
233
题意:从2到1的所有路径中找出最短的路,并且输出最短路径有几条。
策略:先求出最短路径,然后再找出从2到1的最短路径有几条。最短路径用dijkstra算法来求出,什么是dijkstra算法,简单来说,dijkstra算法就是路径长度递增次序产生最短路径的算法:
基本思想是:把集合V分成两组;
(1)S:已求出最短路径的顶点的集合
(2)V-S=T:尚未确定最短路径的顶点集合
将T中顶点按...
分类:
其他好文 时间:
2014-08-09 11:45:57
阅读次数:
275