乙個有向圖,每條邊有權值v[i
],p[
i]v[
i],p
[i],你需要找到乙個環,使得∑v[
i]∑p
[i]∑
p[i]
∑v[i
]盡量大。
看到∑v[i
]∑p[
i]∑p
[i]∑
v[i]
,很容易想到是一道01分數規劃問題。
我們設ans
=max
ans=
max,那麼對於任意的∑v[
i]∑p
[i]∑
p[i]
∑v[i
],都有∑v[
i]∑p
[i]≤
ans∑
p[i]
∑v[i
]≤a
ns移項得∑v[
i]≤a
ns×∑
p[i]
∑v[i
]≤an
s×∑p
[i]再次移項得∑(
p[i]
×ans
)−∑v
[i]≥
0∑(p
[i]×
ans)
−∑v[
i]≥0
也就是說∑(
p[i]
×ans
−v[i
])≥0
∑(p[
i]×a
ns−v
[i])
≥0於是我們可以把所有的邊的邊權更改為p[i
]×an
s−v[
i]p[
i]×a
ns−v
[i],只要現在圖中有任意乙個環得邊權和為負數,那麼ans
ans就是不符合要求的。
那就二分ans
ans。題目中說了保證答案不超過200,於是時間複雜度就是o(n
mlog
(200))
o(nm
log(
200)
)。
#include
#include
#include
using
namespace std;
const
int n=
7010
;const
int m=
30010
;int n,m,x,y,v,p,tot,head[n]
;double l,r,mid,dis[n]
;bool vis[n]
;struct edge
e[m]
;void
add(
int from,
int to,
int v,
int p)
bool
spfa
(int x)
//dfs版spfa1求負環
} vis[x]=0
;return1;
}int
main()
for(
int i=
1;i<=n;i++
)add(0
,i,0,0
);l=0;
r=200;
while
(r-l>
0.01)if
(l==0)
printf
("-1");
else
printf
("%0.1lf"
,l);
return0;
}
洛谷P1768 天路
那是一條神奇的天路誒 把第乙個神犇送上天堂 xdm先生唱著這首 親切 的歌曲,一道猥瑣題目的靈感在腦中出現了。和c sunshine大神商量後,這道猥瑣的題目終於出現在本次試題上了,旨在難到一幫大腦不夠靈活的oier們 johnkram真的不是說你 言歸正傳,小x的夢中,他在 開了一家大型旅遊公司,...
天路 洛谷p1768
那是一條神奇的天路誒 把第乙個神犇送上天堂 xdm先生唱著這首 親切 的歌曲,一道猥瑣題目的靈感在腦中出現了。和c sunshine大神商量後,這道猥瑣的題目終於出現在本次試題上了,旨在難到一幫大腦不夠靈活的oier們 johnkram真的不是說你 言歸正傳,小x的夢中,他在 開了一家大型旅遊公司,...
洛谷 P1083 借教室 二分 差分陣列
在大學期間,經常需要租借教室。大到院系舉辦活動,小到學習小組自習討論,都需要向學校申請借教室。教室的大小功能不同,借教室人的身份不同,借教室的手續也不一樣。面對海量租借教室的資訊,我們自然希望程式設計解決這個問題。我們需要處理接下來n nn天的借教室資訊,其中第i ii天學校有r ir i ri 個...