日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

poj 2728(最小比率生成树)

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj 2728(最小比率生成树) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考題解:http://www.cppblog.com/jh818012/articles/167743.html

題意:有n個村莊,村莊在不同坐標和海拔,現在要對所有村莊供水,只要兩個村莊之間有一條路即可,

建造水管距離為坐標之間的歐幾里德距離(好象是叫歐幾里德距離吧),費用為海拔之差

現在要求方案使得費用與距離的比值最小

很顯然,這個題目是要求一棵最優比率生成樹,



0-1分數規劃,0-1分數規劃是分數規劃的一種特殊情況,分數規劃適用于求解最優化問題的,對于求最大的對應解,該理論也有效

這是從網上找到的具體的最優比率生成樹的方法的講解

概念

有帶權圖G, 對于圖中每條邊e[i], 都有benifit[i](收入)和cost[i](花費), 我們要求的是一棵生成樹T, 它使得 ∑(benifit[i]) / ∑(cost[i]), i∈T 最大(或最小).

這顯然是一個具有現實意義的問題.

?

解法之一 0-1分數規劃

設x[i]等于1或0, 表示邊e[i]是否屬于生成樹.

則我們所求的比率 r = ∑(benifit[i] * x[i]) / ∑(cost[i] * x[i]), 0≤i<m .

為了使 r 最大, 設計一個子問題---> 讓 z = ∑(benifit[i] * x[i]) - l * ∑(cost[i] * x[i]) = ∑(d[i] * x[i]) 最大 (d[i] = benifit[i] - l * cost[i]) , 并記為z(l). 我們可以興高采烈地把z(l)看做以d為邊權的最大生成樹的總權值.

?


然后明確兩個性質:

 1. z單調遞減

  證明: 因為cost為正數, 所以z隨l的減小而增大.

 2. z( max(r) ) = 0

  證明: 若z( max(r) ) < 0, ∑(benifit[i] * x[i]) - max(r) * ∑(cost[i] * x[i]) < 0, 可化為 max(r) < max(r). 矛盾;

   若z( max(r) ) >= 0, 根據性質1, 當z = 0 時r最大.

View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 using namespace std; 8 #define N 1010 9 #define MAX 999999999 10 const double eps=1e-4; 11 int n; 12 int vis[N],x[N],y[N],z[N],pre[N]; 13 double dis[N],cost[N][N],dist[N][N]; 14 double prim(double x){ 15 double totalcost=0,totaldist=0; 16 for(int i=1;i<=n;i++){ 17 pre[i]=1; 18 } 19 dis[1]=0; 20 memset(vis,0,sizeof(vis)); 21 vis[1]=1; 22 for(int i=2;i<=n;i++){ 23 dis[i]=cost[1][i]-dist[1][i]*x; 24 } 25 int k; 26 for(int i=2;i<=n;i++){ 27 double mincost=MAX; 28 for(int j=2;j<=n;j++){ 29 if(!vis[j]&&dis[j]<mincost){ 30 mincost=dis[j]; 31 k=j; 32 } 33 } 34 vis[k]=1; 35 totalcost+=cost[pre[k]][k]; 36 totaldist+=dist[pre[k]][k]; 37 for(int j=1;j<=n;j++){ 38 if(!vis[j]&&dis[j]>cost[k][j]-dist[k][j]*x){ 39 dis[j]=cost[k][j]-dist[k][j]*x; 40 pre[j]=k; 41 } 42 } 43 } 44 return totalcost/totaldist; 45 } 46 int main(){ 47 while(scanf("%d",&n),n){ 48 for(int i=1;i<=n;i++){ 49 scanf("%d%d%d",&x[i],&y[i],&z[i]); 50 for(int j=1;j<i;j++){ 51 double t=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]); 52 cost[i][j]=cost[j][i]=abs(z[i]-z[j]); 53 dist[i][j]=dist[j][i]=sqrt(t); 54 } 55 } 56 double a=0; 57 while(1){ 58 double b=prim(a); 59 if(abs(a-b)<eps)break; 60 else a=b; 61 //cout<<a<<endl; 62 } 63 printf("%.3f\n",a); 64 } 65 return 0; 66 }

?

轉載于:https://www.cnblogs.com/huangriq/archive/2012/08/04/2623460.html

總結

以上是生活随笔為你收集整理的poj 2728(最小比率生成树)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 有码一区| 正在播放adn156松下纱荣子 | 久久精品片 | 午夜精品久久久久久毛片 | av999| 国产一级一片免费播放 | 蜜臀久久99精品久久久画质超高清 | 竹菊影视一区二区三区 | 亚洲av无码专区在线 | 领导揉我胸亲奶揉下面 | 国产女主播喷水高潮网红在线 | 六月丁香啪啪 | 污污小说在线观看 | 男女视频在线观看免费 | 一本色道久久hezyo无码 | 青青草香蕉 | 亚洲国产av一区二区三区 | 中文字幕一区二区人妻电影 | 日韩视频一区二区三区 | 久久久精品一区 | 亚洲日本精品视频 | 久久99精品久久久久久国产越南 | 亚洲视频在线视频 | 丰满尤物白嫩啪啪少妇 | 成人免费网站www网站高清 | 黄色污网站在线观看 | 国产精品777777| 午夜影院在线观看 | 欧美日色 | 精品深夜av无码一区二区老年 | 91精彩视频 | 大帝av| 成人免费看片98欧美 | 婷婷二区 | 久久精品国产亚洲av麻豆色欲 | 麻豆免费视频网站 | 青青草视频在线看 | 精品国产综合 | 亚洲精选一区二区 | 国产极品在线观看 | 日韩亚洲欧美在线观看 | 亚洲高清精品视频 | av2018| 欧美大片免费在线观看 | 一区二区三区亚洲精品 | 中文字幕一区二区三区波野结 | 色综合天天综合网天天看片 | 久久久999国产 | 国产精品色图 | 国产欧美亚洲一区二区 | 国内精品偷拍 | 日韩欧美亚洲在线 | 69精品人人| 国产又粗又黄 | 欧美极品三级 | 久久久精品视频免费 | 日韩欧美一级 | 先锋影音av在线资源 | 俄罗斯黄色大片 | 91精品久久久久久久久久 | 国产美女无遮挡免费 | 91久久久久久久久久久 | 不卡av片 | 美女靠逼app | 美女aaa| 成人开心网 | 婷婷色小说| 午夜精品极品粉嫩国产尤物 | 激情四射婷婷 | 狠狠干狠狠干狠狠干 | 色哟哟国产精品色哟哟 | 在线观看污污视频 | 北条麻妃一区二区三区在线观看 | 狠狠a | av毛片在线免费看 | 天天拍天天操 | 国产精品久久久久高潮 | 亚洲字幕av一区二区三区四区 | 亚洲一区在线播放 | 色婷婷亚洲一区二区三区 | 日韩中文字幕在线 | 性色av无码久久一区二区三区 | 国产一区二区在线观看免费 | 大吊一区二区三区 | 免费看成人aa片无码视频羞羞网 | 99爱国产 | 色婷婷久久五月综合成人 | 波多野结衣一区二区三区在线观看 | eeuss鲁丝片一区二区三区 | 337p亚洲精品色噜噜噜 | 四虎国产精品成人免费入口 | 日韩欧美中出 | 一级片麻豆 | 超碰66 | 一级日韩片 | 久久伊人超碰 | 亚洲人午夜射精精品日韩 | 香蕉大人久久国产成人av | 亚洲国产精品久久久久 |