题意:有n个(n<=1000)城市,告诉坐标(int),边的权值就是两点的距离,并且每个城市都有人居住,现在要修路n-1条路,使得每个城市都连通。现能让一条边可以不用任何花费。求 这条边的两端点的总人数/(包含这条边的最小生成树的总权值-这条边的权值)最大值。即(Wa+Wb)/(mst-w(a,b))最大。思路:先求该图的最小生成树,prim,O(n^2);方法一: 枚举边枚举最小生成树的每条边,去掉这条边,最小生成树变成了2个各自连通的树,假设为树A,B。分别找到树A,B中人口最多的两个点,这两个点连起来就是去掉这条边所取得的最大比例。用树形DP可以求这个最大比例。方法二: 枚举点在求 Read More
posted @ 2012-10-07 22:30 To be an ACMan Views(1113) Comments(0) Diggs(1)
题意:一个N个点的无向图,先生成一棵最小生成树,然后给你Q次询问,每次询问都是x,y,z的形式, 表示的意思是在原图中将x,y之间的边增大(一定是变大的)到z时,此时最小生成数的值是多少。最后求Q次询问最小生成树的平均值。 N<=3000 , Q<=10000思路:先求出该图的最小生成树,用prim(), O(n^2)。对于每次询问, 都是将a,b之间的边增加到c, 会出现 两种情况:1. 如果边权增加的那条边原先就不在最小生成树中,那么这时候的最小生成树的值不变2. 如果在原最小生成树中,那么这时候将增加的边从原最小生成树中去掉,这时候生成树就被分成了两个各自联通的部分,可以证明 Read More
posted @ 2012-10-07 12:00 To be an ACMan Views(3016) Comments(0) Diggs(1)