摘要: http://poj.org/problem?id=1639 题目大意:给定一个图,求最小生成树,其中某个节点的度数小于K。 这就是一个最小k限度生成树,我写了好久好久,也有我不熟悉STL的原因,CE了好久…… 求最小K度生成树的方法:首先去掉特殊点(v0),然后图会成为x个联通块,求x次最小生成树,然后将这x个生成树连接到v0上。 每次寻找一个点p,满足点p不与v0相联系(边不在生成树上,不是不相连),且与点p相关的在生成树上的边大于点p到v0的距离,舍弃原来的边,并将点p与v0相连。#include <iostream>#include <cstdio>#inclu 阅读全文
posted @ 2011-07-28 23:53 Delostik 阅读(391) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2976 题目大意:给定n个二元组(a,b),扔掉k个二元组,使得剩下的 最大。 这两天一直在搞分数规划,有了前两道题(3621、2728),这道题就是完完全全的大水题了。 设 r=100*∑(ai)/∑(bi) ,有 100*∑(ai)-r*∑(bi)=0 ∑(100*ai-r*bi)=0 这个东西是单调的…… 我们可以将每个二元组的得分设为100*a-r*b,然后从大到小排序,取前n-k个得分求和(sum)。若sum>0则说明r还不够大,可以向上二分;反之向下二分…… 我最讨厌精度什么的了……尤其是C++的精度……#include 阅读全文
posted @ 2011-07-28 12:26 Delostik 阅读(204) 评论(2) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3621 这两天一直在复习代码,因为好久都不写东西了,而且转了语言,除了Dinic我什么都不会写…… 题目大意:给你一个有向图,边有权(T),点有权(F),使求一个环,使得最大化∑(F)/∑(T)。 这是一个最优比率环问题,与上一个最有比率生成树问题相似,都是01分数规划的考点。 设 ans≥∑(F)/∑(T) , 有 ∑(F)-∑(T)*ans≤0 ∑(F-T*ans)≤0 我们可以二分ans,将图的边权变为 F-T*ans,用SPFA判断图中是否有负权回路。如果图中有负权回路,则当前回路中 ∑(F)-∑(T)*ans<0,继而推得∑ 阅读全文
posted @ 2011-07-28 11:24 Delostik 阅读(289) 评论(0) 推荐(0) 编辑