9. C問題 問題概要
? N 個の地域で人気投票が行われた
– i 番目の地域の総投票数は Vi
– i 番目の地域の「きつね派」の得票数は Fi
? 「きつね派」が過半数の票を獲得した地域数は?
? 注意: ちょうど半分の得票は過半数ではない
2015/6/23 9
10. C問題 解法
? Vi が全部入力されてから Fi が入力されるので、
Vi を読み込んだら配列に記憶しておきましょう
? 過半数の判定方法の考え方はいろいろ
– 2 倍したら総投票数を超える: 2 × Fi > Vi
– 「うさぎ派」の得票数より多く得票: Fi > Vi - Fi
– Fi > Vi / 2 では切り捨てに注意
2015/6/23 10
18. F問題 問題概要
? 画面に文字列 S が表示されていたら太鼓の真ん中
を、文字列 T が表示されていたら太鼓のふちを叩く
ゲームがある
? 画面には S と T がいくつか一列に並んで表示されて
いるが、間隔が狭すぎてどこで区切られているのか
分からない
? 画面に表示されている長い文字列 X を S または T
に区切る方法は何通り?
19. F問題 解法
? DP[i] = i文字目までの正しい区切り方の個数
? 例 (X=“dkdkdkdk”, S=“dk”, T=“dkdk”)
d k d k d k d k
1 0 1 0 2 0 3 0 5DP:
20. F問題 解法
? DPの遷移
? if i文字目からの|S|文字が S と一致していたら
DP[i+|S|] += DP[i]
? if i文字目からの|T|文字が T と一致していたら
DP[i+|T|] += DP[i]
? modを取るのを忘れないように!