description
在廣闊的澳大利亞內陸地區長途跋涉後,你孤身一人帶著乙個揹包來到了科巴。你被這個城市發達而美麗的市場所
深深吸引,決定定居於此,做乙個商人。科巴有個集市,集市用從1到n的整數編號,集市之間通過m條單向道路連
接,通過每條道路都需要消耗一定的時間。在科巴的集市上,有k種不同的商品,商品用從1到k的整數編號。每個
集市對每種商品都有自己的定價,**和賣出商品的**可以是不同的。並非每個集市都可以買賣所有的商品:一
個集市可能只提供部分商品的雙向交易服務;對於一種商品,乙個集市也可能只收購而不賣出該商品或只賣出而不
收購該商品。如果乙個集市收購一種商品,它收購這種商品的數量是不限的,同樣,乙個集市如果賣出一種商品,
則它賣出這種商品的數量也是不限的。為了更快地獲得收益,你決定尋找一條盈利效率最高的環路。環路是指帶著
空的揹包從乙個集市出發,沿著道路前進,經過若干個市場並最終回到出發點。在環路中,允許多次經過同乙個集
市或同一條道路。在經過集市時,你可以購買或者賣出商品,一旦你購買了乙個商品,你需要把它裝在揹包裡帶走
。由於你的揹包非常小,任何時候你最多只能持有乙個商品。在購買乙個商品時,你不需要考慮你是否有足夠的金
錢,但在賣出時,需要注意只能賣出你擁有的商品。從環路中得到的收益為在環路中賣出商品得到的金錢減去購買
商品花費的金錢,而一條環路上消耗的時間則是依次通過環路上所有道路所需要花費的時間的總和。環路的盈利效
率是指從環路中得到的收益除以花費的時間。需要注意的是,一條沒有任何交易的環路的盈利效率為0。你需要求
出所有消耗時間為正數的環路中,盈利效率最高的環路的盈利效率。答案向下取整保留到整數。如果沒有任何一條
環路可以盈利,則輸出0。
input
第一行包含3個正整數n,m和k,分別表示集市數量、道路數量和商品種類數量。
接下來的n行,第行中包含2k個整數描述乙個集市bi,1 si,1 bi,2 si,2…bik si,k。
對於任意的1<=j<=k,整數和分別表示在編號為的集市上購買、賣出編號為的商品時的交易**。
如果乙個交易**為-1,則表示這個商品在這個集市上不能進行這種交易。
接下來m行,第行包含3個整數vp,wp和tp,表示存在一條從編號為vp的市場出發前往編號為wp的市場的路徑花費tp分鐘。
1<=n<=100,1<=m<=9900。
如果在編號為的集市i中,編號為j的商品既可以購買又可以賣出
對於編號為p(1<=p<=m)的道路,保證vp<>wp且1<=tp<=10^7
不存在滿足1<=p < q<=m的p,q,使得(vp,wp)=(vq,wq) 。
輸出包含乙個整數,表示盈利效率最高的環路盈利效率,答案向下取整保留到整數。
如果沒有任何一條環路可以盈利,則輸出0。
sample input
4 5 2
10 9 5 2
6 4 20 15
9 7 10 9
-1 -1 16 11
1 2 3
2 3 3
1 4 1
4 3 1
3 1 1
sample output
在樣例中,我們考慮下面兩條環路,「1 - 2 - 3 - 1」 和 「1 - 4 - 3 - 1」。
考慮環路 「1 - 2 - 3 - 1」 :這條環路消耗的總時間是 分鐘。在這條環路中,
最佳的交易方式是:在編號為 1 的集市中購買編號為 2 的商品(花費的金錢為 5 );在編號
為 2 的集市中賣出編號為 2 的商品(得到的金錢為 15 ),然後立即購買編號為 1 的商品
(花費的金錢為 6 );帶著編號為 1 的商品經過編號為 3 的集市,在回到編號為 1 的城市後
賣出(得到的金錢為 9 )。在這個環路中,總盈利為13。 這個環路的盈利效率為13/7 ,向下取整後為 1 。
考慮環路 「1 - 4 - 3 - 1」 :這條環路消耗的總時間是 分鐘。在這條環路中,
最佳的交易方式是:在編號為 1 的集市中購買編號為 2 的商品(花費的金錢為 5 );在編號
為 4 的集市中賣出編號為 2 的商品(得到的金錢為 11 );然後經過編號為 3 的集市回到編
號為 1 的城市。在這個環路中,總盈利為 6。 這個環路的盈利效率為6/3 ,向下取整後為 2 。
綜上所述,盈利效率最高的環路的盈利效率為 2 。
01分數規劃中的最優比例生成環問題,先floyed跑出最短路,在更新出最大收益,二分答案,spfa炮正環、
#include#include#include
#include
#define int long long
using
namespace
std;
const
int maxn = 1005
;const
int inf = 0x3f3f3f3f
;int
n,m,k,s[maxn][maxn],b[maxn][maxn];
intdp[maxn][maxn],map[maxn][maxn],ans;
intcnt[maxn];
double
dis[maxn];
bool
vis[maxn];
inline
bool check(double
xx) }}}
return
false;}
inline
void
floyed()
inline
void
dp()
}//for(register int i=1;i<=n;i++)
}inline
void
update()
printf(
"%lld
",(int
)r);
}signed main()floyed();dp();update();
return0;
}
APIO2017墊底記 THUPC2017划水記
看到大家的遊記都是從ctsc開始寫的,只有我為了防止 喪失信心沒有報ctsc,遊記只能從apio開始寫了。中午兩點多到了,發現跟我乙個房間的是乙個貴州小哥。先把pkusc和thusc的報名弄完,準備刷題發現忘帶u盤了。想了想,似乎應該刷一刷往年的apio題。就從去年開始吧。於是一下午 一晚上做完了賽...
APIO2017 斑斕之地 可持久化線段樹
apio2017 斑斕之地 將不是河流的格仔染成白色,是河流的格仔染成黑色,那麼連通塊數就是白色格仔數 1 2 的聯通白色格仔數 2 1 的聯通白色格仔數 2 2 的聯通白色格仔數。我們考慮每個格仔與它左邊 上邊 左上三個格仔的連通性 同為白色視為聯通 為了方便起見,對於每個 2 2 的格仔,我們將...
洛谷 P3629 APIO2010 巡邏
題目在這裡 這是乙個紫題,當然很難。我們往簡單的想,不建立新的道路時,從1號節點出發,把整棵樹上的每條邊遍歷至少一次,再回到1號節點,會恰好經過每條邊兩次,路線總長度為 2 n 1 根據樹的深度優先遍歷思想,很容易證明這個結論,因為每條邊必然被遞迴一次,回溯一次。建立1條新道路之後,因為新道路必須恰...