LoginSignup
1
1

0.はじめに

 茶色落ち目前のがけっぷちで参加。
A~Cもややこしくすんなりいきませんでしたが何とかAC。
D以降はさらに難易度が上がり1時間かけてもDは解けませんでした。
レートは-8で802とぎりぎり緑に残りましたが、もう誤差の範囲ですね。

1.A - Subsegment Reverse

 A問題からなかなか面倒な問題。
1~Nのリストを作って
1~L-1のリスト+L~Rを逆にしたリスト+R+1~のリストを
結合したリストを作り出力
スライス指定の微調整に時間がかかりましたが無事ACでした。

 https://atcoder.jp/contests/abc356/submissions/54087286

2.B - Nutrients

 素直に計算するだけの問題。
【考え方】
 各食品ごとの栄養素リストを読み
 Aの栄養素リストから引いていく。
 最後にAの栄養素リストを先頭から見て
 0より大きいものが残っていればNo
 残ってなければYesを出力して終了

 https://atcoder.jp/contests/abc356/submissions/54092020

3.C - Keys

 鍵の数が最大15と少なめなので
全パターンをbit全探索で調べることはわかったので
あとはそれの実装方法を考えるだけでした。
【実装】
 1.N,M,Kを入力
 2.テストで使用した鍵リストを保持するリストLを初期化
 3.テスト結果を保持するリストRを初期化
 4.以下M回繰り返し(テスト結果読み込み)
  -1.リストlに1行入力
  -2.リストAにlの2文字目からl[0]文字格納(テストで使用した鍵リスト)
  -3.リストANにリストA-1をint型として格納
  -4.LにANを追加
  -5.Rにl-1を追加
 5.答え用変数ansを0で初期化
 6.以下2のN乗回繰り返し(変数i=回数)
  ~ビット全探索用鍵リスト作成(リストPの0は偽物のカギ、1は本物のカギ)
  -1.変数bに”f'{i:0=15b}'”(iを15桁0埋めの2進数に変換)
  -2.リストPにbの15-N桁目以降をリスト化してセット
  -3.変数okに1をセット(リストPの内容でテストケースがすべて正しければ1)
  -4.以下M回繰り返し(変数j=回数)
   -1.変数ca(j回目のテスト時に本物の鍵を使った回数)に0をセット
   -2.リストL[j]を先頭から読み出しcaにint(P[k])を加算
   -3.caがK以上でR[j]が"o"の時は何もしない(テストケースと鍵の真偽が一致)
   -4.caがK以下でR[j]が"x"の時は何もしない(テストケースと鍵の真偽が一致)
   -5.-3、-4以外の時はokを0に変更(テストケースと鍵の真偽が一致しない)
  -5.ansにokを加算
 7.ansを出力して終了

 bit全探索はもう少しスマートな実装があった気がしましたが
力技になりました。
無事、TLEもでずACでした。

 https://atcoder.jp/contests/abc356/submissions/54115101

以上

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1