題意:秦朝有n個城市,需要修建一些道路使得任意兩個城市之間都可以連通。道士徐福聲稱他可以用法術修路,不花錢,也不用勞動力,但只能修一條路,因此需要慎重選擇用法術修哪一條路。秦始皇不僅希望其他道路的總長度b盡量短(這樣可以節省勞動力),還希望法術連線的兩個城市的人口之和a盡量大,因此下令尋找乙個使得a/b最大的方案。你的任務是找到這個方案。
任意兩個城市之間都可以修路,長度為兩個城市之間的歐幾里德距離。
思路:先計算出最小生成樹,之後用法術修的路肯定在最小生成樹當中,那麼之後我們就可以列舉邊u-v。
當然,需要預處理,像最小生成樹一樣,計算出u和v之間唯一路徑上的最大權maxcost[u][v]。
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10
using
namespace
std;
11 typedef long
long
ll;12
const
int maxn=1000+5;13
14struct
node
1522 }edge[maxn*maxn];
2324
intn;
25int
cnt;
26int
p[maxn];
27int
x[maxn],y[maxn];
28int
num[maxn];
29 vector g[maxn]; //
儲存最小生成樹中結點u的鄰接結點
30 vector c[maxn]; //
c[u][i]表示結點u和和結點g[u][i]之間的邊權
3132
double maxcost[maxn][maxn]; //
u,v兩點之間的最大邊權
33 vectornodes;
3435
int find(int
x)36
3940
double
mst()
4157}58
return
tot_q;59}
6061
void dfs(int u,int fa,double cost) //
無根樹轉有根樹,計算出u,v兩點之間路徑的最大邊權
6268
nodes.push_back(u);
69for(int i=0;i)
7074}75
76int
main()
7786
for(int i=0;i)
8796}97
double tot=mst();
98 memset(maxcost,0,sizeof
(maxcost));
99nodes.clear();
100 dfs(0,-1,0
);101
double ans=-1
;102
for(int i=0;i)
103108
}109 printf("
%.2lf\n
",ans);
110}
111return0;
112 }
mysql5 7 13初次修改密碼
安裝 mysql5.7.13綠色版 後,第一次嘗試使用預設使用者名稱root登陸mysql就以下問題 解決方案 1.在mysql安裝目錄下的.ini檔案末尾添上一句 skip grant tables,儲存。ini配置詳見 2.執行命令 net stop mysql net start mysql ...
5 7 1 3 Global 物件的屬性
global物件還包含了一些屬性,例如,特殊的值undefined nan以及infinity都是global物件的屬性。此外,所有原生引用型別的建構函式,像object和function,也都是global物件的屬性。下表給出了global物件的所有屬性。屬 性 說 明 屬 性 說 明 undef...
HDU5713 K個聯通塊
有一張 n n le14 個點,m 條邊無重邊的無向圖,求有多少個邊集,使得刪掉邊集裡的邊後,圖里恰好有 k 個連通塊。乙個顯然的動態規劃是,f 表示點集為 s 分成 i 個連通塊的方案數。轉移什麼的都很顯然,關鍵是如何求 f 萬事開頭難!f 的含義是刪去 s 中若干條邊使得新圖仍然連通的方案數。我...