上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 17 下一页
摘要: 题意:给定一张无向图,图中每条边均为白色或黑色,求有K个白色节点的边权和最小的生成树,数据保证有解 题解: 比较直观的想法是跑一个最小生成树,然后不断换边使得白边的数量等于K 然而我们可以给所有白边加上一个值,使其被选的几率增大或减小,而赋的值可以通过二分来找到。 #include <cstdio> 阅读全文
posted @ 2017-02-27 23:14 WDZRMPCBIT 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一张无向图,图中每个边都有a,b两种边权,求一条从S到T的路径,使得路径中(a的最大值+b的最大值)最小 法一:我们先将边按a排序,每次加入一条边,然后将加入的边的两端入队,跑一边SPFA求从1到达每个节点路径上的最长的一条边的长度。这样需要跑M边SPFA,然而有一个优化——我们可以直接将 阅读全文
posted @ 2017-02-27 23:11 WDZRMPCBIT 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意:求一个无向图的最小生成树与次小生成树的边权和是否相等 题解: 首先有一个性质,就是最小生成树上的任意两点的距离就是其在原图中的最短路,严格的证明我不会- -,但是由于Prim Dijkstra算法的过程完全相同,所以这个性质比较显然(不会证就不会证呗为何还要找理由QAQ) 还要一条性质就是无向 阅读全文
posted @ 2017-02-27 23:06 WDZRMPCBIT 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题意:求恰好经过K条边的最短路 题解:根据Floyd的性质,如果我拿一开始给出的两个边权矩阵(只经过一条边的最短路的邻接矩阵)跑Floyd,得到的一定是只经过两条边的最短路的邻接矩阵(普通的Floyd是用求出的最短路来更新最短路而非用初始矩阵),同理用两条边的邻接矩阵一定能得到四条边的,因此N条边的 阅读全文
posted @ 2017-02-27 23:04 WDZRMPCBIT 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 题意:给订一张无向图,求一条S到T的路径,使得路径上的最大边权与最小边权的比值最小 题解:将边由小到大排序,暴力枚举最小边,然后借鉴Kruskal的思想,由小到大加入每一条大于初始边的边,检验S与T是否连通,若连通则更新答案,枚举下一条边。 #include <cstdio> #include <c 阅读全文
posted @ 2017-02-27 23:02 WDZRMPCBIT 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题意:给定N个变量和K个约束条件,形如x1==x2,x1-x2≥a……,求$\sum\limits_{i = 1}^N {{x_i}}$的最小值 题解: 首先差分约束系统是指形如:x[i]-x[j]<d[k]的形式的几个方程联立得到的方程组,其中d均为已知量,x均为未知量。(至于等于好嘛……d--不 阅读全文
posted @ 2017-02-27 23:00 WDZRMPCBIT 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题意:求每个节点v的$\sum\limits_{s \ne v,t \ne v} {\frac{{{C_{s,t}}(v)}}{{{C_{s,t}}}}}$,其中${C_{s,t}}(v)$为从s到t经过v的最短路的数量,${C_{s,t}}$为s到t的最短路的总数 题解:跑一边Floyd然后枚举判 阅读全文
posted @ 2017-02-27 22:57 WDZRMPCBIT 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一张图,有可以将K条路径的花费变为0,求从1到N的最短路 题解: 分层图+最短路水过。 我们把原图复制K份,平行的放在一起(就像饼干一样一层层的),然后给每个图编号1 2 3……K,然后对于原图中每一条边(x,y),在i的x和i+1的y之间连一条边权为0的边,然后在这K个图上做最短路即可。 阅读全文
posted @ 2017-02-27 22:52 WDZRMPCBIT 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个图,图中有保护关系(u,v)表示到v之前必须先到一次u,求从1到N的最短路 题解: 定义d1[i]为直接到达i的最短距离,这个的更新和普通的Dijkstra一样 定义d2[i]为解除i的所有保护的最短距离(不一定要在i结束),这个更新起来很简单,每经过一个节点就将其所控制的城市的发生器 阅读全文
posted @ 2017-02-27 22:50 WDZRMPCBIT 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题意:给定N个正整数ai,求[L,R]中能凑出多少个数 题解: 首先取最小的ai,如果k*ai+x合法,则(k+n)ai+x均合法(其中L<=(k+n)ai+x<=R) 因此对于每一个x,我们只需要求出最小的k,然后就能算出所有的合法解的数量。 至于算k,用最短路就好 #include<map> # 阅读全文
posted @ 2017-02-27 22:48 WDZRMPCBIT 阅读(164) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 17 下一页