随笔分类 -  ACM-树

摘要:题意:N个点构成一棵树。树枝的长度都是1。在当中找两条不相交【没有公共点】的路,使得二者长度之积最大。(2 ≤ n ≤ 200)思路:一开始思路好麻烦,好麻烦,好麻烦,,,,,,,而且WA,,,,,正解:必定存在第三条路径连接两条最长路径。【因为是一棵树】。去掉第三条路径上的某根树枝就可以将原树分成... 阅读全文
posted @ 2015-03-06 21:35 fish7 阅读(229) 评论(0) 推荐(0)
摘要:两遍BFS。从任意一个点出发,第一遍可以找到直径的一端,从这端出发即可找到另外一端。证明:从U点出发,到达V【画个图便清晰了】1.如果U在直径上,则V一定是直径的一个端点。2.如果U不在直径上。U,V线一定和直径有交点(如果没有交点,从U引一条路到直径交于U'。【反证】)。有交点则V一定是直径另一端... 阅读全文
posted @ 2015-03-06 21:29 fish7 阅读(562) 评论(0) 推荐(0)
摘要:题意:N个点形成一棵树。给出根结点P还有树结构的信息。输出每个点的F[i]。F[i]:以i为根的所有子结点中编号比i小的数的个数。0 G[N];int C[N];int ans[N];stack S;bool vis[N];void Add(int x){ for(int i=x;i0;i-=... 阅读全文
posted @ 2015-03-06 12:50 fish7 阅读(145) 评论(0) 推荐(0)
摘要:题意:N个点的一棵树。定义点u和点v的距离等于它们之间的路径(唯一的)的长度。这样我们可以得到n*(n-1)/2个距离。将它们从小到大排序,问前K个数的和是多少。思路:将边长为1的树枝都入队列。每次取出一个,然后从这根树枝的前端生出一个新点,变成距离加1的一根新树枝,将其入队列。如此操作下去。可得到... 阅读全文
posted @ 2014-11-09 14:58 fish7 阅读(473) 评论(8) 推荐(0)
摘要:题意:N个点,M条边。每条边连接两个点u,v,且有一个权值c,c非零即一。问能否将N个点形成一个生成树,并且这棵树的边权值和是一个fibonacii数。 (fibonacii数=1,2,3,5,8 .... )思路:若可以生成一棵树。则有最小生成树和最大生成树。假设已经生成了最小MST P 和最大M... 阅读全文
posted @ 2014-11-08 16:15 fish7 阅读(199) 评论(0) 推荐(0)
摘要:题意:N个点。N行N列d[i][j]。d[i][j]:结点i到结点j的距离。问这N个点是否可能是一棵树。是输出YES,否则输出NO。思路:假设这个完全图是由一棵树得来的,则我们对这个完全图求最小生成树,得到原树。(画个图就明白)故我们对完全图求最小生成树,然后用DFS从这棵树上的每个点出发,判断距离... 阅读全文
posted @ 2014-09-30 02:35 fish7 阅读(235) 评论(0) 推荐(0)