POJ 3621 01分數規劃

2022-05-24 03:54:08 字數 1266 閱讀 5685

題意:

給出乙個有向圖,問求乙個迴路,使得回路上的點權之和/邊權之和最大。

題解:01分數規劃,簡單構造,將點權轉移到邊權上~因為乙個環上的點和邊的數量是相等的~

設i,j之間初始邊權為w[i][j],修改後的邊權為g[i][j],則g[i][j]=w[i][j]*mid+val[i]

spfa判負環即可~

01分數規劃詳見:

**包含bfs版spfa和dfs版spfa兩種版本

dfs版spfa真是快,16ms,在c++裡耗時排第一,嘿嘿~

view code

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

8#define n 1100

9#define m 1000100

1011

using

namespace

std;

1213

inta[m],b[m];

14int

head[n],next[m],to[m];

15int q[m*5

],im[n];

16int

vis[n];

17int

n,cnt,m,st;

18double

l,r,mid,c[m],dis[n],len[m],val[n];

1920 inline void add(int u,int v,double

w)21

2425 inline void

read()

2634}35

/*queue版spfa

36inline bool spfa()

3747

while(h!=t)

4860}61

}62return false;63}

64*/

6566 inline bool dfs(int

u)67

76 vis[u]=0;77

return

false;78

}79//dfs-spfa找負環

80 inline bool

spfa()

8187

88 inline void

go()

8997 printf("

%.2lf\n

",mid);98}

99100

intmain()

101

POJ 2976 01分數規劃

剛做完了最優比率生成樹 就瞬間來了感覺了 題目大意就 給定n個二元組 a,b 扔掉k個二元組,使得剩下的a元素之和與b元素之和的比率最大 題目求的是 max a i x i b i x i 其中a,b都是一一對應的。x i 取0,1 並且 x i n k 那麼可以轉化一下。令r a i x i b ...

POJ2976 0 1分數規劃

include include include include using namespace std const int maxn 1000 5 const double eps 1e 7 struct node n maxn bool cmp node u,node v int n,k bool...

POJ 2976 01分數規劃基礎題目

題意 給你一組 數 一共n個,每個數有兩個權值,價錢a i 代價b i 讓你選擇n k使得 sigma a i sigma b i 100 最大 思路 毫無疑問這個是01分數規劃的最進本形式,唯一的限制就是取個數,那麼我們直接sort以下,取出來就行了。沒啥解釋的,這個是自己的第乙個01分數規劃,一...