0.はじめに
Cまではすぐに解けたけど、DはACもらえませんでした。
でも、いつもよりCまでが早かったせいか、レーティングは
30upしました。
1.A - Count Down
単純にforを回す問題
カウントダウンなところと、Nと0を出力するところが
若干気にするところでした。
https://atcoder.jp/contests/abc281/submissions/37141394
2.B - Sandwich Number
文字列Sが以下のチェックを潜り抜けた場合のみYesを出力
1)Sの長さが8である
2)Sの1文字目と8文字目がチェックリスト1(A-Z)の中にある
3)Sの2文字目がチェックリスト3(123456789)の中にある
4)Sの3~7文字目がチェックリスト2(0123456789)の中にある
ちょっと力技でしたが、回答の速さを優先しました。
https://atcoder.jp/contests/abc281/submissions/37147996
3.C - Circular Playlist
最近のC問題にしては簡単で拍子抜けしつつ、AC
【考え方】
1)TをリストAの合計で割った余りをchkTにセット
2)曲リストの秒数を変数nowAに足していく
3)nowAがchkTを超えた曲をAiとする
nowAからchkTをマイナスした値を変数songにセット
ansにAiの秒数から、songを引いたものをセット
4)Aiの順番と、ansを出力
https://atcoder.jp/contests/abc281/submissions/37154006
4.D - Max Multiple
TLEだったDPで解くしかなさそうだなーと思いつつ
頑張りましたが、時間切れ。
結局解説を見るとDPで解いていたので
やっぱりいい加減DPを使いこなせるようにならないとな・・・。
【考え方1】
単純に数列からK個抽出した場合の組み合わせを
itertools.permutationsで列挙し、合計をリストに格納
→格納したリストを大きい順にDで割り切れるかをチェック
→案の定TLE
【考え方2】
permutationsをcombinationsで試す
→LTEが4つ減るだけ
【考え方3】
列挙して合計をリストに格納する時点でDで割り切れるか判定
→LTE減らず
【考え方4】
なぜか、抽出リストの和ではなく、積と考えて
頓珍漢な解法に進んでいき時間切れ・・・。
DPを学んで出直します。
以上