题意:
n(10^5)个串每个串3个字符  两个串abc、xyz能拼在一起前提是b=x&&c=y  它们能拼成ab(x)c(y)z  求n个串品在一起的串
思路:
将串abc变成ab->bc的一条边  则原题变成了有向图的欧拉路径问题
有向图欧拉路径算法就是遍历  因为欧拉路径其实就是“每条边走一遍”
代码:
#include
#include
#include
#include
#i...
                            
                            
                                分类:
其他好文   时间:
2015-01-29 19:32:03   
                                阅读次数:
211
                             
                    
                        
                            
                            
                                要使得路径上边的最大值最小,实际上就是沿着最小生成树走,就满足条件。故先求出最小生成树,然后保存,在dfs一遍搜索路径。
VIEW CODE
//#pragma comment(linker, "/STACK:102400000,102400000")
#include
#include
#include
#include
#include
#include
#include
#inclu...
                            
                            
                                分类:
其他好文   时间:
2015-01-29 14:45:32   
                                阅读次数:
137
                             
                    
                        
                            
                            
                                题目链接:http://codeforces.com/contest/505/problem/D
题目大意:
在一个图中,有n个顶点,给出m对数字(u,v)表示顶点u和顶点v必须直接或者间接相连,让你构造一个这样的图,输出最少需要多少条边。
分析:
毫无疑问,n个顶点的话,我们最多可以用n条边,使得n个顶点构成一个环,满足所有的情况(任意两点都是联通的),但是这并不一定是最少的边。
于是...
                            
                            
                                分类:
移动开发   时间:
2015-01-28 17:57:22   
                                阅读次数:
209
                             
                    
                        
                            
                            
                                dij 模板
通过 poj 2387 求去点1 -点 n 的最短路径
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int MAXV = 4010;
const int inf = 10000000;
int map[MAXV][MAXV];//路径长度
int d[MAXV];/...
                            
                            
                                分类:
其他好文   时间:
2015-01-28 14:44:15   
                                阅读次数:
169
                             
                    
                        
                            
                            
                                这题是最小生成树的一种扩展,就是求一棵树  使得  
最小。   其中cost 为每条边花费,len为长度。  这实际上就是一个最优比例生成树。最优比例生成树的求解使用了分数规划的方法。  我们先任取k,假设k是最小值,那么sigma(ccost)-k*sigma(len)==0  。那么我们就新建图边权 为  ccosti-k*leni  。求一次最小生成树,如果生成树权值小于0,那么书名其实...
                            
                            
                                分类:
其他好文   时间:
2015-01-28 13:10:54   
                                阅读次数:
124
                             
                    
                        
                            
                            
                                poj1251 Jungle Roads
思路:最小生成树          解题报告Here
CodeForces 472D Design Tutorial: Inverse the Problem
思路:最小生成树          解题报告Here
poj1789 Truck History
思路:最小生成树          解题报告Here
...
                            
                            
                                分类:
其他好文   时间:
2015-01-28 09:59:09   
                                阅读次数:
196
                             
                    
                        
                            
                            
                                次小生成树模板
通过poj 1679
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define INF 10000000
/*
 * 次小生成树
 * 求最小生成树时,用数组Max[i][j]来表示MST中i到j最大边权
 ...
                            
                            
                                分类:
其他好文   时间:
2015-01-27 15:05:28   
                                阅读次数:
119
                             
                    
                        
                            
                            
                                题意: 给一个n*m的棋盘,在上面放上车,放的车之间不能相互攻击(在同一行或者同一列就能相互攻击),并且只有某些点能放车。 问最多能放多少车,其中有多少个格子必须放才能放最多的车。
这是一道很好的理解匈牙利算法的题目。  首先我们求最多放多少车,这是一个行列匹配问题。假设我们用n个左边的点代表行 ,m个右边的点放在右边,如果一个格子(x,y)能放车,那么将左边的x和右边的y连接一起建一条边。这个...
                            
                            
                                分类:
编程语言   时间:
2015-01-26 22:54:40   
                                阅读次数:
320
                             
                    
                        
                            
                            
                                通过:poj-1287
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define INF 10000000
int n, m;
int a, b, c;
int map[100][100], dis[100], v[100];
int prim(in...
                            
                            
                                分类:
其他好文   时间:
2015-01-25 13:53:33   
                                阅读次数:
155
                             
                    
                        
                            
                            
                                在一个群里面,大家互相请教问题,比如A请教B,我们就把B叫做师傅,把A叫做徒弟,这样会产生很多“师傅——徒弟”的关系,一个徒弟可以有很多的师傅,一个师傅也可以有很多徒弟,这是合法的,但是不能出现A是B的师傅而且B是A的师傅,或者A是B的徒弟而且B是A的徒弟,或者在一个更大的关系环里面出现这种情况。很明显题目的意思就是,判断一个给定的有向图中是否存在环。了解了这些,解题方法就非常简单了,那就是直接进...
                            
                            
                                分类:
其他好文   时间:
2015-01-25 00:10:59   
                                阅读次数:
204