atcoder#ABC275G. [ABC275G] Infinite Knapsack

[ABC275G] Infinite Knapsack

配点 : 600600

問題文

NN 種類の品物がそれぞれ無限個あります。 ii 種類目の品物は重さが AiA_i 、体積が BiB_i 、価値が CiC_i です。

レベル XX の高橋君は、重さの合計が XX 以下かつ体積の合計が XX 以下になるように品物を持つことができます。ここで、高橋君は条件を満たすならば同じ種類の品物を何個でも持つことが可能であり、また選ばない種類の品物があっても構いません。

レベル XX の高橋君が持てる品物の価値の合計の最大値を f(X)f(X) とするとき、極限 limXf(X)X\displaystyle\lim_{X\to \infty} \frac{f(X)}{X} が存在することが証明できます。この値を求めてください。

制約

  • 1N2×1051\leq N\leq 2\times 10^5
  • 108Ai,Bi,Ci10910^8\leq A_i,B_i,C_i \leq 10^9
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

NN

A1A_1 B1B_1 C1C_1

A2A_2 B2B_2 C2C_2

\vdots

ANA_N BNB_N CNC_N

出力

答えを出力せよ。なお、想定解答との絶対誤差または相対誤差が 10610^{-6} 以下であれば正解として扱われる。

2
100000000 200000000 100000000
200000000 100000000 100000000
0.6666666666666667

X=300000000X=300000000 のとき、高橋君は重さの合計が 300000000300000000 以下かつ体積の合計が 300000000300000000 以下になるように品物を持つことができます。

持ち方の一例として、高橋君は 11 番目の品物と 22 番目の品物を 11 個ずつ持つことができます。このとき、品物の価値の合計は 100000000+100000000=200000000100000000+100000000=200000000 であり、これが達成可能な価値の最大値なので、f(300000000)300000000=23\dfrac{f(300000000)}{300000000}=\dfrac{2}{3} です。

また、この入力では極限 limXf(X)X\displaystyle\lim_{X\to \infty} \dfrac{f(X)}{X}23\dfrac{2}{3} に一致することが証明できます。よって答えは 0.6666666...0.6666666... です。

1
500000000 300000000 123456789
0.2469135780000000