摘要:
题目链接:http://poj.org/problem?id=2831题意:题目大意:给张图,然后问你,如果某边的权值下降为V,那么这个边有无可能在最小生成树中呢?节点数≤1000,边数≤100000,询问数≤100000。思路:prim。考虑prim的算法过程:每次加入一个点,并且加入该点的条件是dis[i]是还没加入点的dis[]中最小的。所以执行prim时,用数组no[]保存某点加入的次序,numm[i]保存第i个加入的点的id查询边(a,b)时(假设a的加入次序先于b),则枚举no[a]+1 ~ no[b]加入的点的dis[],若存在x2#include3#include4#inclu 阅读全文
摘要:
复习。借图= =n个点,给出两两点之间的距离,求最小生成树的边长度之和。稠密图,用prim。1#include2#include3#include4#include5usingnamespacestd;67constdoublemaxd=1000001;8constintN=105;910doublex[N],y[N];11doublemap1[N][N],dis[N];12intvis[N];1314doublecal(inti,intj)15{16doubleret=(y[i]-y[j])*(y[i]-y[j])+(x[i]-x[j])*(x[i]-x[j]);17returnsqrt(r 阅读全文
摘要:
题目链接:http://poj.org/problem?id=2853题意:某些正整数可由几个连续数相加而成,且方法可能有多种,如3 = 1 + 2, 9 = 4 + 5 = 2 + 3 + 4给出任意小于2^31的正整数,问有多少种方法。思路:其实就是关于公差为1的等差数列的问题。由 num = (a1 + an) * n / 2, an = a1 + n - 1可以得到令 k = 2 * num / n则a1 = (k - n + 1) / 2, an = (k + n - 1)所以枚举sqrt(2 * num) 的所有因子,每一组因子中小的为n,大的为k求出对应的a1,an,若满足大于0 阅读全文