AtCoder Beginner Contest 115
0WA全完したが、Dでintとlong longを混同して30分食ってしまいPerf1600は行かなかった。
A - Cristmas Eve Eve Eve
問題: A - Christmas Eve Eve Eve
今回は解く速さを重視したので、nで場合分けするif文を並べまくって問題文の通りに実装した。
拙解 (C++): Submission #3738555 - AtCoder Beginner Contest 115
B - Cristmas Eve Eve
問題: B - Christmas Eve Eve
全ての品物の値段が偶数なので、割引額は最も定価の高い品物の値段÷2になる。これを全ての品物の値段の和から引けばいい。
一応数式に起こす*1と、求める支払金額を、最大の定価を円として、
と求められる。
拙解 (C++): Submission #3739682 - AtCoder Beginner Contest 115
C - Cristmas Eve
問題: C - Christmas Eve
選んだK本の木のうち最大のものと最小のものだけわかっていればいいので、木の高さでソート*2して連続したK本の一番前のものと一番後ろのものの差をすべて取れば、最小の候補をすべて列挙できる。この最小値を求めればいいので、計算量がになってでも解ける。
拙解 (C++): Submission #3741193 - AtCoder Beginner Contest 115
D - Cristmas
問題: D - Christmas
まず、レベルバーガーの層の数を、パティの数をとして、
とすると、再帰で解ける。
下半分を丸々食べてしまうときはバン1枚とレベルバーガーを丸々食べたことになり、中途半端なところはレベルとして食べる残りの層を調整しつつ真ん中に挟む1枚のパティを考慮しつつレベルを下げていく。
計算量はなので、には余裕で間に合う。これで解けた!
…と思ったが、再帰関数のlong long型にすべきxをint型にしていたことに気づかずに30分消費した。
拙解 (C++): Submission #3746178 - AtCoder Beginner Contest 115
まとめ
型名に気を付ける
0-basedと1-basedをごちゃごちゃにして時間食ったので問題文に従う