日韩性视频-久久久蜜桃-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(最小比率生成树)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 豆花av| 永久av在线免费观看 | 超碰在97 | 伊人草| 热久久中文字幕 | 韩国三色电费2024免费吗怎么看 | 亚洲永久精品ww.7491进入 | 亚洲综合情 | 98精品视频 | 特级黄色录像 | 欧美 亚洲 另类 激情 另类 | 免费看黄色三级 | 亚洲男人第一网站 | 丰满岳乱妇在线观看中字无码 | 禁漫天堂在线 | 日韩欧美中文字幕一区二区 | 成人美女毛片 | 懂色av蜜臀av粉嫩av喷吹 | 午夜小视频在线播放 | 邵氏电影《金莲外传2》免费观看 | 国产麻豆一精品一av一免费 | 亚洲一区二区三区四区在线 | 亚洲午夜国产 | 香蕉久久久久 | 波多野结衣在线网址 | 久久国产人妻一区二区免色戒电影 | 亚洲欧美网址 | 伊人久久国产精品 | 明里柚番号 | 中文字幕在线网址 | 国内精品一区二区三区 | 国产精品成人在线 | 麻豆视频国产 | 亚洲色图综合在线 | 1024精品一区二区三区日韩 | 亚洲色图40p | 在线黄色大片 | 在线免费观看中文字幕 | 中国女人一级一次看片 | 欧洲亚洲精品 | 青草视频在线观看视频 | 黄色免费网站在线观看 | 男男全肉变态重口高h | 欧美在线视频一区二区三区 | 美足av电影| 久久亚洲精品国产 | 51成人精品网站 | 欧美极品少妇xxxxⅹ裸体艺术 | 性爱视频免费 | 多毛的亚洲人毛茸茸 | 国产精品久久久久久久久久 | 欧美性视频在线播放 | 国产精品毛片一区二区 | 在线播放日韩av | 99国产在线观看 | 欧美激情一二三区 | 西欧free性满足hd老熟妇 | 亚洲精品国产精品乱码在线观看 | 99色在线| 久久免费少妇高潮久久精品99 | 91伊人久久 | av资源新版在线天堂 | 精品免费视频 | 91精品国产91久久久久久 | h视频在线看 | 大学生一级片 | 污版视频在线观看 | 日本三级全黄 | 蜜桃久久一区二区三区 | 日本伊人久久 | 久久久久99精品成人片三人毛片 | 国产无套内射普通话对白 | 嫩草影院在线观看视频 | www.午夜av | 中文字幕一区二区三区精彩视频 | gogo亚洲国模私拍人体 | 少妇真人直播免费视频 | 97caoporn| 日韩精品久久久久久久电影99爱 | 狠狠婷| 无码人妻丰满熟妇区毛片蜜桃精品 | 同性色老头性xxxx老头 | 亚洲av无码成人精品国产 | 精品一区三区 | 亚洲天堂激情 | 日韩精品中文字幕一区二区三区 | 四虎国产视频 | 欧美亚洲专区 | 丁香伊人 | 毛片在线观看视频 | 丰满大乳奶做爰ⅹxx视频 | 大尺度做爰呻吟舌吻网站 | 18女人毛片 | 国产激情久久久久 | 色婷婷国产精品久久包臀 | 性网爆门事件集合av | 精品久久久久久无码中文野结衣 | www.色多多 | 波多野结衣一区在线 |