洛谷P1768 天路

2021-08-21 01:42:19 字數 1731 閱讀 9698

「那是一條神奇的天路誒~,把第乙個神犇送上天堂~」,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以內.

這一題直接找環肯定超時,甚至60分都不好拿。我們這樣想:設ans為答案,則存在任意環e保證∑v(i)/∑p(i)<=ans,可以得到∑v(i)<=ans*∑p(i),於是∑-∑v(i)>=0。

最後得到∑>=0,

即以p(i)*ans-v(i)為邊權的圖中不存在負權環。

(我沒想到這點導致我不會做。。。)

一道dpfa應用的好題

**:

#includeusing namespace std;

int h[10001],next[130001],v[130001],n,m;

float p[130001],w[130001],d[130001],low,high,mid;

bool in[130001],flag;

void dfs(int now)

d[v[i]]=d[now]+p[i]*mid-w[i];

dfs(v[i]);

if(!flag)return;

}in[now]=0;

}void init()

}for(i=1;i<=n;i++)

}int main()

if(low==0)printf("-1");

else printf("%.1f",high);

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點到...