天路 洛谷p1768

2021-08-30 13:24:08 字數 1637 閱讀 5117

「那是一條神奇的天路誒~,把第乙個神犇送上天堂~」,xdm先生唱著這首「親切」的歌曲,一道猥瑣題目的靈感在腦中出現了。

和c_sunshine大神商量後,這道猥瑣的題目終於出現在本次試題上了,旨在難到一幫大腦不夠靈活的oier們(johnkram真的不是說你……)。

言歸正傳,小x的夢中,他在**開了一家大型旅遊公司,現在,他要為**的各個景點設計一組鐵路線。但是,小x發現,來旅遊的遊客都很挑剔,他們乘火車在各個景點間遊覽,景點的趣味當然是不用說啦,關鍵是路上。試想,若是乘火車一圈轉悠,卻發現回到了遊玩過的某個景點,花了一大堆錢卻在路上看不到好的風景,那是有多麼的惱火啊。

所以,小x為所有的路徑定義了兩個值,vi和pi,分別表示火車線路的風景趣味度和乘坐一次的**。現在小x想知道,乘客從任意乙個景點開始坐火車走過的一條回路上所有的v之和與p之和的比值的最大值。以便為顧客們推薦一條環繞旅遊路線(路線不一定包含所有的景點,但是不可以存在重複的火車路線)。

於是,小x夢醒之後找到了你……

輸入格式:

第一行兩個正整數n,m,表示有n個景點,m條火車路線,火車路線是單向的。

以下m行,每行4個正整數,分別表示一條路線的起點,終點,v值和p值。

注意,兩個頂點間可能有多條軌道,但一次只能走其中的一條。

輸出格式:

乙個實數,表示一條回路上最大的比值,保留1位小數。

若沒有迴路,輸出-1。

輸入樣例#1:複製

5 6

1 2 1 1

4 1 6 2

5 4 8 1

2 3 2 2

5 2 4 1

3 5 6 4

輸出樣例#1:複製

2.3
對於30%的資料,1≤n≤100,1≤m≤20;

對於60%的資料,1≤n≤3,000,1≤m≤2,000;

對於100%的資料,1≤n≤7,000,1≤m≤20,000,1≤vi,pi≤1,000.

保證答案在200以內.

題解:01分數規劃二分答案,dfs判是否存在正環即可。

#include#define f(i,l,r) for(i=(l);i<=(r);i++)

using namespace std;

const int maxn=7005,maxm=20005,inf=1e20;

double eps=1e-3;

struct edgee[maxm<<1];

int h[maxn],tot,flag;

int n,m;

double dis[maxn];

int vis[maxn];

inline void add(int u,int v,int w,int p)

; h[u]=tot++;

}void dfs(int u)

while(r-l>eps)

if(l) cout<

else cout<

return 0;

}

洛谷P1768 天路

那是一條神奇的天路誒 把第乙個神犇送上天堂 xdm先生唱著這首 親切 的歌曲,一道猥瑣題目的靈感在腦中出現了。和c sunshine大神商量後,這道猥瑣的題目終於出現在本次試題上了,旨在難到一幫大腦不夠靈活的oier們 johnkram真的不是說你 言歸正傳,小x的夢中,他在 開了一家大型旅遊公司,...

洛谷P1768 天路 負環 二分 數論

乙個有向圖,每條邊有權值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 ...

洛谷 P1807最長路

設g為有n個頂點的有向無環圖,g中各頂點的編號為1到n,且當為g中的一條邊時有i j。設w i,j 為邊的長度,請設計演算法,計算圖g中 1,n 間的最長路徑。輸入格式 輸入檔案longest.in的第一行有兩個整數n和m,表示有n個頂點和m條邊,接下來m行中每行輸入3個整數a,b,v 表示從a點到...