摘要: 青蛙跳跃,题意大概是:青蛙从起点到终点进行一次或多次的跳跃,多次跳跃中肯定有最大的跳跃距离。求在所有的跳跃中,最小的最大跳跃距离SF-_-(不理解?看题目吧)。 可以用最小生成树完成。以起点为根,生成一棵最小生成树,直到树里包含了终点。 或者这么说吧,类似于Kruskal算法,我们每次选取不成环的最小边,直到这棵树选取了通往终点的最小边,那么最后选择的这条边必然是在树中最大的一条边,而且在其余的边中是最小的。你不会找到比这条边小的最大距离,因为比它小的最小距离都在树里了,而未选取该边前树中不包含终点,即比该边小的所有边无法到达终点。即改边满足的两个条件,最小,而且是起点到终点的最大距离... 阅读全文
posted @ 2013-07-26 19:28 SF-_- 阅读(1439) 评论(0) 推荐(0) 编辑
摘要: 原题地址:http://poj.org/problem?id=3159 题意大概是班长发糖果,班里面有不良风气,A希望B的糖果不比自己多C个。班长要满足小朋友的需求,而且要让自己的糖果比snoopy的尽量多。 比如现在ABCD四个小朋友,B的糖果不能超过A的5个,如果A的史努比,D是班长,那么班长最多比史努比多7个糖果,而不是5+4+1=9个。 因为如果是9个,就不满足D-A#include #include #include using namespace std;struct CNode{ int k; int w; bool operatorcmp.w; ... 阅读全文
posted @ 2013-07-26 19:05 SF-_- 阅读(541) 评论(0) 推荐(0) 编辑