問題一覧 > 通常問題

No.766 金魚すくい

レベル : / 実行時間制限 : 1ケース 1.500秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 67
作問者 : ei1333333 / テスター : treeone
4 ProblemId : 2321 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2018-12-13 23:38:55

問題文

水槽に金魚が N 匹います。それぞれの金魚には 1 から N までの番号が振られていて, 金魚 i の価値は Vi です。

あなたはポイと呼ばれる金魚をすくう道具を M 個持っています。 魚をポイですくおうとすると P %の確率で破れ, 100P %の確率ですくえます。 一度破れたポイをもう一度使うことはできません。

あなたはすべての金魚をすくい終わるか, すべてのポイが破れるまで以下の行動を続けます。

  • まだ破れていないポイで, まだすくえていない好きな金魚をすくおうとする。

あなたはすくった金魚の価値の和の期待値が最大になるように行動します。 このとき, この期待値は常に既約分数 AB の形で表すことができます。 B(mod109+7) での逆元を B1 として, A×B1(mod109+7) を求めてください。

入力

N M P
V1 V2 ... VN
  • 1N105
  • 1M105
  • 0P100
  • 1Vi109
  • 入力はすべて整数

出力

1 行に答えを出力せよ。

サンプル

サンプル1
入力
2 1 50
100 50
出力
500000066

最初に金魚 1 をすくおうとするのが最適です。このとき以下の 3 通りの行動が考えられます。

  1. 金魚 1 をすくおうとして, ポイが破れる(確率 12)。
  2. 金魚 1 をすくう。次に金魚 2 をすくおうとして, ポイが破れる(確率 14)
  3. 金魚 1 をすくう。次に金魚 2 をすくう(確率 14)。

期待値は 012+10014+15014=1252 です。2(mod109+7) での逆元は 5×108+4 なので, 125×(5×108+4)(mod109+7)=500000066 を出力します。

サンプル2
入力
1 100 99
100
出力
977688169
サンプル3
入力
4 1 0
3 1000 30 300
出力
1333

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。