LoginSignup
0
1

More than 1 year has passed since last update.

0.はじめに
 全体的に難易度が1段ずつ高い感じがしました。
 C問題見た時はあきらめモードでしたが何とかACになり
 結果としてレートは-2で収まりました。
 そういえばレート変動が結構すぐ反映された気がします。

 DはDP問題だったので断念。いい加減覚えないと次に進めないな・・・。

1.A - flip
 なんか、スタイリッシュな方法があるだろうなと思いつつ
 愚直に1文字ずつ見て反転した文字列を作る形でACでした。
 解説見るといろいろ書いてあったので、覚えておくと今後役に立ちそうでした。

 https://atcoder.jp/contests/abc289/submissions/38783122

2.B - レ
 ややこしい問題でしたが、問題文が詳細で
 参考にしてロジックを組めば解けました。
 
 考え方
  1)変数N,M、リストAをそれぞれ入力する
  2)出力用のリストL、反転用リストTL、レ点アドレスLiを用意する
  3)for文で変数iを1~Nまで回す
   3-1)変数iをTLに格納
   3-2-1)A[Li]=iの時(レ点がついてる時)
    Li+=1
   3-2-2)A[Li]!=iの時
      またはリストAの最後まで使い切ったとき(Li>=len(A))
    3-2-2-1)TLを降順ソート
    3-2-2-2)TLを頭から順にLに格納
    3-2-2-3)TLを初期化
  4)Lのリストをフォーマットに従い出力
 で、AC頂けました。

 https://atcoder.jp/contests/abc289/submissions/38793863

3.C - Coverage
 最初は問題文の意味が分からず諦めかけましたが
 3回くらい読んで何とか理解できました

 要は、M個の集合の全組み合わせでそれぞれ集合を作り
 その中に1~Nまでの数字がすべて含まれるのはいくつあるか
 ということと理解しました。(書いてみると問題文とあまり変わりませんが)

 考え方
  1)itertoolsをインポート
  2)2次元表Lに[M個分の集合][集合の要素]を入力
  3)for文でiを1~Mまで回す(集合に使う集合数にiを使用)
   3-1)fo文で変数itlに、itertools.combinationsを使用して
     0~M-1から、i個選んだリストを格納しそれぞれ以下の処理
    3-1-1)リストPにリストL内のitlにある集合を順に読み出し格納
    3-1-2)Pを昇順ソート
    3-1-3)変数chkに1をセット
    3-1-4)リストPを順に読んでいき、P[i]がchkと一致したらchkに1加算
    3-1-5)リストPを読み終わった後、chkの値が、N+1であれば
        条件を満たす集合なので変数ansに1加算
  4)変数ansを表示

 https://atcoder.jp/contests/abc289/submissions/38809378

以上

0
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
0
1