摘要: 题意:最优比率生成树,要求生成树中的所有边的花费与所有边的长度的比值最小题解:01分数规划,详见http://www.cnblogs.com/proverbs/archive/2013/01/09/2853725.html网上都是写的最小生成树,其实最大生成树也可以,其实写什么都一样,关键是根据公式的不等号方向判断~最小生成树:View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstring> 4 #include <cstdio> 5 #include <al 阅读全文
posted @ 2013-01-09 22:12 proverbs 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个有向图,问求一个回路,使得回路上的点权之和/边权之和最大。题解:01分数规划,简单构造,将点权转移到边权上~因为一个环上的点和边的数量是相等的~设i,j之间初始边权为w[i][j],修改后的边权为g[i][j],则g[i][j]=w[i][j]*mid+val[i]spfa判负环即可~01分数规划详见:http://www.cnblogs.com/proverbs/archive/2013/01/09/2853725.html代码包含bfs版spfa和dfs版spfa两种版本dfs版spfa真是快,16ms,在c++里耗时排第一,嘿嘿~View Code 1 #include.. 阅读全文
posted @ 2013-01-09 22:07 proverbs 阅读(664) 评论(0) 推荐(0) 编辑
摘要: 题意:给定n个二元组(a,b),删除k个二元组,使得剩下的a元素之和与b元素之和的比率最大(比率最后乘100输出)题解:最裸的01分数规划,以此题为例讲述如何构造。设:xi∈{0,1},表示第i个二元组是否留下,p为比率,P为p的最大值,即比例的最大值(注意区分大P于小p)则:p=sigma(ai*xi)/sigma(bi*xi) 其中sigma(xi)=n-k显然:对于所有可能的取得的 p 的值,p<=P即:对于所有可能的xi的组合,sigma(ai*xi)/sigma(bi*xi)<=P即:sigma(ai*xi)/sigma(bi*xi)的最大值等于P即:sigma(ai*x 阅读全文
posted @ 2013-01-09 21:59 proverbs 阅读(826) 评论(0) 推荐(0) 编辑
摘要: 题意:求无向网珞中边集不相交的两条最短路(两最短路要求等长)。题解:显然的费用流,然后显然mle或者tle~然后先最短路与处理一下,建网络流的图的时候只建最短路就行了,边一下就少了很多,跑最大流就行了~不知道我的代码为什么在第22个点tle了,觉得我写的挺对的。。哎,抑郁了一上午。。。不过我就得想到最短路预处理这个题的目的就达到了 ~ 阅读全文
posted @ 2013-01-09 21:16 proverbs 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 题意:一个城市有n座建筑物,每个建筑物里面有一些人,为了在战争爆发时这些人都可以避难,城市里面建了m座避难所。每座避难所只能容纳有限人数。给出每个建筑物和避难所的坐标(题目要求距离为曼哈顿距离+1)。现在给你一种避难方案,问这种方案是否为最优方案,如果不是,请输出一种比当前更优的方案(不一定最优)。答案给出的方案不是最优的,当且仅当存在另一种方案的所有人移动的总路程比答案少。。题解:建图,费用流超时。。然后看了下费用流的消圈算法,就是用来验证当前的费用流是否是最小的。消圈定理:残留网络里如果存在负费用圈,那么当前流不是最小费用流。负圈有必要解释一下:费用总和是负数,且每条边的剩余流量大于0网上 阅读全文
posted @ 2013-01-09 01:25 proverbs 阅读(1309) 评论(2) 推荐(0) 编辑