0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

0.はじめに

 急に涼しくなってきて体調崩し気味の今日この頃
 ABは順調に進みつつCでブレーキ。
 久々の2完止まりかと思いましたが、なんとかくりあ。
 Dは考えがまとまらないと言うかなんか眠くなってしまい
 解けずに終了。歳のせいか22時過ぎのパフォーマンス低下が
 きになりました・・・。
 レートは-3で732と微減でした。
 みんな達にもむずかしかったのかな。

1. A - A - OS Versions

 辞書を用意して、XとYを
 Ocelotだったら1、Servalだったら2、Lynxだったら3に変換
 後は比較してYes or Noを出力してACでした。

 https://atcoder.jp/contests/abc426/submissions/69826149

2.B - The Odd One Out

 Pythonのcounter関数を使い、Sをキー文字、値個数に変換し
 値が1のキー文字を出力してACでした。

 https://atcoder.jp/contests/abc426/submissions/69831367

3.C - Upgrade Required

 問題を読んで、セグメント木とか使わないとダメなのかなーとおもいつつも
 C問題でそれはないかと、以下の考えで実装。
 【考え方】(高速化の工夫無し)
  1.キー:1~Nの数字、値1の辞書Dを用意(後々考えればリストでよかったな・・・。)
  2.~以下q回繰り返し~
   -1.XとYを読み込み、iを1~Xまで1ずつ増加させ
    D[i]の値をans(初期値0)に加算し、D[i]は0に置換
   -2.ansを出力し、D[Y]にansを加算

 【高速化の工夫】
  ・バージョンアップ済バージョンを保持する変数MO(初期値1)を準備
  ・2-1.の繰り返し時にiを1からではなくMOから開始
  ・2-2.の後処理でMOをXとMOの大きい方で更新

 上記のちょっとした工夫でTLEがなくなりました。
 ちなみに、高速化の工夫を思いついて変数MOを実装しながら
 ロジックを入れるのを忘れて、1回目はTLEとなってしまいました。

 https://atcoder.jp/contests/abc426/submissions/69858358

4.D - Pop and Insert

 コンテスト時は、文字列Sを文字種(”0”or”1”)と個数のタプルにし
 両端から真ん中の固まり以外を変換する場合の操作回数を・・・
 と、訳の分からない方法で実装しようとしていて諦めました。

 解説を読んだところ変換対象外とする固まりは真ん中にこだわらずによく
 一番大きな塊を避けて変換した場合の操作回数を回答とする事が分かり
 目からうろこでした。

 https://atcoder.jp/contests/abc426/submissions/69890042

以上

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?