https://www.lydsy.com/JudgeOnline/problem.php?id=2395 有n个城市(编号从0..n-1),m条公路(双向的),从中选择n-1条边,使得任意的两个城市能够连通,一条边需要的c的费用和t的时间,定义一个方案的权值v=n-1条边的费用和*n-1条边的时间和,你的任务是求一个方案使得v最小 参考:https://www.cnblogs.com/autsky-jadek/p/3959446.html 参考说的太详细了,还配了图,读不懂的应该不存在吧,已经…
Description      有n个城市(编号从0..n-1),m条公路(双向的),从中选择n-1条边,使得任意的两个城市能够连通,一条边需要的c的费用和t的时间,定义一个方案的权值v=n-1条边的费用和*n-1条边的时间和,你的任务是求一个方案使得v最小 Input 第一行两个整数n,m,接下来每行四个整数a,b,c,t,表示有一条公路从城市a到城市b需要t时间和费用c Output [output]timeismoney.out 仅一行两个整数sumc,sumt,(sumc表示使得v最小…
题目链接 BZOJ2395 题意:无向图中每条边有两种权值,定义一个生成树的权值为两种权值各自的和的积 求权值最小的生成树 题解 如果我们将一个生成树的权值看做坐标,那么每一个生成树就对应一个二维平面上的坐标 在同一个反比例函数图像上的点权值相同,反比例函数\(xy\)越小的点越贴近坐标轴 所以答案一定在下凸包上 我们就递归查找这样的点 我们先分别将两种权值作为指标求出\(A\)和\(B\)两个点,分别是\(x\)最小的点和\(y\)最小的点,即为下凸包的一个边界 我们找到位于\(AB\)左下角…
设每个点有x,y两个权值,求一棵生成树,使得sigma(x[i])*sigma(y[i])最小. 设每棵生成树为坐标系上的一个点,sigma(x[i])为横坐标,sigma(y[i])为纵坐标.则问题转化为求一个点,使得xy=k最小.即,使过这个点的反比例函数y=k/x最接近坐标轴. Step1:求得分别距x轴和y轴最近的生成树(点):A.B(分别按x权值和y权值做最小生成树即可). Step2:寻找一个在AB的靠近原点一侧的且离AB最远的生成树C,试图更新答案. [怎么找???? ——由于C离…
题意 每条边有两个权值\(c,t\),请求出一颗生成树,使得\(\sum c\times \sum t\)最小 题解 为什么生成树会和计算几何扯上关系-- 对于每棵树,设\(x=c,y=t\),我们可以把它看成平面上的一个点,其中\(\sum c\)为横坐标,\(\sum t\)为纵坐标.那么题目就可以转化成求反比例函数图像上的点\(k=xy\)满足\(k\)最小 我们先求出一棵\(\sum c\)最小的生成树,设这个点为\(A\),和一棵\(\sum t\)最小的生成树,设为\(B\),那么如…
所谓最小乘积生成树,即对于一个无向连通图的每一条边均有两个权值xi,yi,在图中找一颗生成树,使得Σxi*Σyi取最小值. 直接处理问题较为棘手,但每条边的权值可以描述为一个二元组(xi,yi),这也就不难想到将生成树转化为平面内的点,x代表Σxi,y代表Σyi(注意这里的xi,yi指的是在生成树中的边的权值),那么问题就变成了在平面内找一个点使得x*y最小,那么显然这个点是在下凸壳上的. 因此可以首先找出两个一定在凸包上的点,例如A(minx,y),B(miny,x),在直线AB下方找一个在凸…
问题描述 每条边两个权值 \(x,y\),求一棵 \((\sum x) \times (\sum y)\) 最小的生成树 Sol 把每一棵生成树的权值 \(\sum x\) 和 \(\sum y\) 看成平面上的一个点 \((X,Y)\) 那么就是要求 \(X \times Y\) 最小 设 \(k=X \times Y\),则 \(Y = \frac{k}{X}\) 也就是要求这个反比例函数最靠近坐标轴 我们知道了 \(X\) 最小和 \(Y\) 最小的答案(两遍最小生成树) 设这两个点为 \…
[BZOJ2395][Balkan 2011]Timeismoney 题面 \(darkbzoj\) 题解 如果我们只有一个条件要满足的话直接最小生成树就可以了,但是现在我们有两维啊... 我们将每个方法的费用和时间看作一个二维坐标\((x,y)\) 则我们要求\(x\centerdot y=k\)最小即要求反比例函数\(y=\frac kx\)的图像离坐标轴最近. 那么我们怎么求呢?分下面三步: \(Step1\) 分别求出离\(y,x\)轴最近的点,这个通过直接最小生成树一维排序可以求出.…
题解 最小乘积生成树! 我们把,x的总和和y的总和作为x坐标和y左边,画在坐标系上 我们选择两个初始点,一个是最靠近y轴的A,也就是x总和最小,一个是最靠近x轴的B,也就是y总和最小 连接两条直线,在这条直线上面的点都不用考虑了 我们选一个离直线最远的点C,且在直线下方,我们用叉积考虑这个东西,也就是--面积最大!我们如果用最小生成树的话,只要让面积是负的就好了 推一下式子,发现是\((A.y - B.y) * C.x + (B.x - A.x) * C.y\)我们发现就是把边设置成 \((A.…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2395 [题目大意] 给出一张无向图,每条边上有a,b两个值,求生成树, 使得suma*sumb最小,在满足这个前提下保证suma最小. [题解] 把方案看成一个二维点,x=sum(a),y=sum(b) 答案一定在下凸壳上,找到l,r两个点,l是x最小的,r是y最小的 然后递归调用work(l,r):找到离该直线最远的点,那个点一定在下凸壳上 将边权设为(a,b)叉积(l-r),求出…