Codeforces Round #84 (Div 1 only)

久しぶりに出たら非常に残念な感じの順位に。

result

220位 494 / 688 / - / - / -
1829 -> 1833

A. Lucky Sum of Digits

問題

Lucky Numberは各桁が4または7であるような数である。
各桁の和がnであるような最小のLucky Numberを求めよ。
存在しない場合は-1を出力せよ。

試行錯誤

TopCoderで良くあるような問題。
nが7で割れるようになるまで4を出力して、残りは7を出力。


提出。pretest passed.

B. Lucky Probability

問題

整数pl,pr,vl,vrが与えられる。
petyaは区間[pl,pr]から整数pを等しい確率で一つ選ぶ。
vashaは区間[vl,vr]から整数vを等しい確率で一つ選ぶ。


区間[min(v,p),max(v,p)]がlucky numberをちょうどk個含んでいる確率を求めよ。

試行錯誤

lucky numberをあらかじめ全て生成しておいて、

  • pがちょうどlucky numberの場合
  • pがlucky numberとlucky numberの間の場合

にわけてそれぞれ区間がk個lucky numberを含む確率を求める。


k=1の場合は別に計算する必要がある。


なんかコードが冗長になって色々ハマってしまう。
提出出来たのは1:20くらい経過してからorz

C. Lucky Tree

問題

エッジに重みのついた木が与えられる。
次の条件を満たす頂点の三つ組(i,j,k)の個数を求めよ。

  • iからjへ、lucky numberの重みのあるエッジを通る道がある
  • iからkへ、lucky numberの重みのあるエッジを通る道がある
試行錯誤

dp...かなあ。
各頂点からlucky numberのエッジを使って行く頂点の数が求められれば良い。


ただ、木は根なし木なので方向どう考えるか。。。
子側と親側に二回dfsしてやればいいんだろうか、などとしているうちに時間終了

System Test

通った。