ユニークビジョンプログラミングコンテスト2023 新春(AtCoder Beginner Contest 287)参加記

2023/1/28に開催された、ユニークビジョンプログラミングコンテスト2023 新春(AtCoder Beginner Contest 287)に参加しました。

atcoder.jp

先週はABC、ARCと立て続けに残念な結果になってしまい、レートの方は1100台を切ってしまう状態に。。

今回も負けを喰らうと、4桁レート維持も厳しくなるかというところ。ここいらで連敗を止めようという気持ちで臨む事としました。

今回の結果

有言実行!今回は、なんとか5完を確保することができましたとさ。

ABC287結果
ABC287結果

タイムは結構早めだったので、水パフォが出てくれました。これで先週の負けを大分取り戻せました。

振り返り

B問題で少しやらかしましたが、概ね早いペースで5完まで行くことができました。

ABC287提出結果
ABC287提出結果

A問題

A - Majority

Forの数を2倍した値が、Nより大きければYes、それ以外はNoという感じで実装。

問題なく、提出一発でACが取れましたとさ。

1分35秒で1完。

提出コード

https://atcoder.jp/contests/abc287/submissions/38375909

B問題

B - Postal Card

N \times Mパターンの全探索を行なっても、十分足りるような制約のため、シンプルにendsWithメソッドがTrueになるかの全探索で実装。

ここで、変数のnmの配置をミスってしまい、初回提出で1ペナ。そのあと修正してなんとかACが取れましたとさ。

6分20秒1ペナで2完。最近、ポカミスが増えたような気がする。反省しないとなあ。

提出コード

https://atcoder.jp/contests/abc287/submissions/38383315

C問題

C - Path Graph?

最初、パスグラフというのが何のことかよくわからなかったので、とりあえずググってみる。で、ようは一本道になっているグラフのことだということで解決。

本題に戻って、パスグラフの判定方法としては、

  • 次数が1の頂点が2個であること。
  • 次数が2を超える点がないこと。
  • 連結であること。

でいけそう。

連結かどうかは、Union-Findで行うという実装で提出。問題なくACが取れましたとさ。

13分44秒1ペナで3完。

提出コード

https://atcoder.jp/contests/abc287/submissions/38389972

D問題

D - Match or Not

制約からすると、各xの値についてO(1)で判定する必要がありそうだ。

ということで、STを前から照合した時に何文字までマッチするかと、後ろから照合した時に何文字マッチするかというのを前計算しておけば、各xについて素早く結果が計算できそう。

ということで、上記の考え方で実装。本番で通るかどうか少し心配でしたが、なんとかACを取り切ることができましたとさ。

35分44秒1ペナで4完。

提出コード

https://atcoder.jp/contests/abc287/submissions/38401736

E問題

E - Karuta

なんか難しそうな見た目をしており、以前やった文字列アルゴリズムを知らないと解けない問題かという印象。

ただ、他の文字列と、前からどのぐらい一致するかというのを全探索するのは変で、文字列をソートしてあげればだいぶ効率化できるのではないかと推察。

一応、サンプル2で検証してみると、やはり文字列でソート後、前後の文字とのLCPを取れば答えと合ってくれるみたい。

ということで、文字列とその出現順でソートし、前後のLCPのMaxを答えとする実装で提出。TLEだけが心配でしたが、なんとか通ってくれました。

61分39秒1ペナで5完。

提出コード

https://atcoder.jp/contests/abc287/submissions/38411214

F問題

F - Components

だいぶ時間が余った状態でF問題に取り組みましたが、これはよくわからず。

見た目から推察するに、典型90で少し触った木DPなのかというところと、計算量はO(N^{2})なのかという印象だが、肝心の遷移をどうすればいいのかわからない。

結局、この問題の考察を進めているところで時間切れになりました。

のちほど解説を見ると、たしかに木DPだった模様だが、遷移については難しいという感じでした。後ほど復習します。

G問題

G - Balance Update Query

問題すら見れておりません。

Ex問題

Ex - Directed Graph and Query

問題すら見れておりません。

これまでの実績

先週減らしたレートを取り戻しました。ここからさらに上に行けるといいんだが。。

コンテスト実績
コンテスト実績

総括

順位表の状況を見ると、今回はE問題までの難易度が甘めだったのかというところでした。

タイムは少し良かった方でしたが、肝心の高難易度の問題を解くというところがまだできていないかと。この結果には満足せず、次に向けて今回解けなかった問題を中心に復習していこうと思います。

ということで、また次回も頑張ります。