0.はじめに
9月になっても暑すぎる今日この頃。
今回は日曜お昼という今までにないタイミングでの開催で
集中できるか心配でしたが、問題なく取り組めました。
A~Cは歯ごたえを感じつつも回答できましたが、
Dで苦戦。自分の中では上手くいっているのにWA隣困惑。
一旦諦めましたが、終了時間を間違えていたことに
気づき再度チャレンジしたら勘違いに気づきAC。
無駄に提出せずにちゃんと確認できていればもっと成績よかったなと
後悔しました。
レートは +30の711と、久々の700台になりました。
1. A - Stage Clear
某スー〇ー〇リオブラザーズみたいな問題。
昔取った杵柄でゲームを思い出しながら(あまり関係ない)
即答できました。intとstrを混ぜなきゃいけないのが手間でした。
https://atcoder.jp/contests/abc422/submissions/69099341
2.B - Looped Rope
B問題にたまにある面倒な2次元問題。
最近は慣れたもので、条件通りに各マスを判別して
最後に結果を出力してACでした。
https://atcoder.jp/contests/abc422/submissions/69105630
3.C - AtCoder AAC Contest
最近の問題にしては簡単なので、何か罠があるのかも・・・
と思いつつ解いてみたらすんなりACでした。
【考え方】
・ABCを作れるだけ作る
・そのご余ったAとCでACCとかAACを作れるだけ作る
考え方はすんなりできましたが、実装はちょっと悩みました。
【実装】
・Na、Nb、Ncの最小値をXとする(ABCをできるだけ作る)
・出力用変数ansにXをセット
・Na、Nb、NcからXを引く
・ansにNa、Nc,(Na+Nc)/3のうち一番小さいものを足す
→Na、Ncが0ならもうACCとかAACが作れない
Bがなくなっただけなら、AとCであるだけ作れるのが(Na+Nc)/3個
https://atcoder.jp/contests/abc422/submissions/69110991
4.D - Least Unbalanced
おぼろげながら思いついた解法がありましたが
実装まで落とし込むのに悩みました。
【考え方】
・変数C(出力U用)
・リストを構成する要素はKを2のN乗で割った商(切り捨て)をX、あまりをYとすると
Y個のX+1と、N-Y個のXとなる。その時Y=0ならUは0それ以外なら1となる
・出力リストをLとした場合、すべての操作を終えた状態を考えるとリストLはKが残っている状態
・リストに対しN回以下の操作を行う(問題の逆の操作)
・空のリストL2を用意
・リストLの各要素lを読み込み、奇数なら、l//2+1とl//2を
偶数ならl//2とl//2をL2に追加
・LをL2で置き換える
・Cをmax(C、max(L2)-min(L2))で置き換え
(一回でもlが奇数ならCは1,すべて偶数なら0でよいがまぁなんとなく計算)
・最後にCとLを出力して終了
https://atcoder.jp/contests/abc422/submissions/69133291
以上