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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[01分数规划]【学习笔记】

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [01分数规划]【学习笔记】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01分數規劃

$N$個物品選$k$個,最大化:

$\frac{\sum\limits_{i=1}^{k}A_i}{\sum\limits_{i=1}^{k}B_i}$

二分答案$mid$

如果

$\sum\limits_{i=1}^{k}{A_i-mid*B_i}\ >\ 0$

則可以更優

顯然是要選擇$A_i-mid*B_i$的前$k$大

?

最優比率生成樹

最小化生成樹的$n$條邊

$\frac{\sum\limits_{i,j=1}^{n}cost(i,j)}{\sum\limits_{i,j=1}^{n}Dis(i,j)}$

一樣的做法二分答案每次求最小生成樹

然后完全圖用$Kruskal$多一個$log$,還是用$Prim\ Naive$好(你以為我會告訴你我現學的$Prim$嘛)

?

最優比率環

找一個環,最大化某個條件

二分答案,在圖上轉化為負環

$spfa$判斷負環:

$1.$普通$BFS$做法,可以先把所有點加到隊列里,$d[i]=0$

$2.$$DFS$做法,$d[i]=0$,枚舉每個點開始$DFS$,看看會不會形成環

double d[N]; int vis[N],cl; bool dfs(int u,double mid){vis[u]=cl;for(int i=h[u];i;i=e[i].ne){int v=e[i].v;double w=mid*e[i].w-f[u];if(d[v]>d[u]+w){d[v]=d[u]+w;if(vis[v]==vis[u]) return true;else if(dfs(v,mid)) return true;}}vis[u]=0;return false; } bool NegativeCircle(double mid){memset(vis,0,sizeof(vis));for(cl=1;cl<=n;cl++) if(dfs(cl,mid)) return true;return false; } DFS

?

最大權密度子圖

$Maximize D=\frac{\sum\limits_{e \in E}x_e}{\sum\limits_{v \in V}x_v}$
$x_e,x_v \in {0,1}$
$\forall e=(u,v) \in E,\ u,v \in V$


同樣二分答案$g$,然后判斷
$\sum\limits_{e \in E}x_e\ -\ \sum\limits_{v \in V}x_v*g\ >\ 0$則可以更優
二分查找范圍$[m,\frac{1}{n}]$,精度$\frac{1}{n^2}$
求解二分查找后式子的最大值使用最大權閉合子圖,選一條邊則必須選擇兩個頂點
$s--1-->e--INF-->u,v--g-->t$

總結

以上是生活随笔為你收集整理的[01分数规划]【学习笔记】的全部內容,希望文章能夠幫你解決所遇到的問題。

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