AtCoder Beginner Contest 243 参加記

2022/3/12に開催されたAtCoder Beginner Contest 243に参加しました。

atcoder.jp

直近のRatedコンテスト成績は絶賛6連敗中。ジリジリとレートが削られていく状況が続いており、競プロに対するモチベーションも下がりがちのため、そろそろこの悪い流れを断ち切りたいところ。

まずは、今回で連敗を阻止するぞという気持ちで臨むこととしました。

今回の結果

で、、、いままで3完続きだったABCでなんとか4完を確保することができましたとさ。

ABC243結果
ABC243結果

で、なんと今回は4完でも水色パフォーマンスが出てくれまして、なんとか連敗を阻止することに成功!レートの方も4桁に戻すことができましたとさ。

振り返り

D問題まではまずます好調でしたが、E以降がさっぱりでした。

ABC243提出結果
ABC243提出結果

A問題

A - Shampoo

もう少しうまいやり方もあるかと思いつつ、下手に効率化すると逆にドツボにハマりそうという懸念もあり、単純な解法で解くこととした。

Vから、A,B,C,A,B,C,...と引いていき、最終的に、答えがマイナスになった時の変数で場合分けして結果を出力すればよい。

あとは、実装して提出後、問題なくACが取れましたとさ。

4分27秒で1完。少しコーディングに時間がかかってしまっている印象です。

提出コード

https://atcoder.jp/contests/abc243/submissions/30029232

B問題

B - Hit and Blow

とりあえず、配列Aの中身をすべてHashSetに突っ込んでみる。

その後、配列Bの値を先頭から見ていき、

  • A_i = B_iの場合、答え1に1追加

  • A_i \ne B_i且つ、B_iの値が、配列Aの値を入れたHashSetの中に含まれている場合は答え2に1追加

以上の要領で実装し、問題なくACが取れましたとさ。

8分35秒で2完。ここまでは、まあまあのタイムという印象。

提出コード

https://atcoder.jp/contests/abc243/submissions/30034335

C問題

C - Collision 2

少しややこしめだが、解法を考えるのにはそんなに苦労しないという印象の問題。

入力に対して、平面上の位置、X,Yと歩く向きの方向(LR)を持つオブジェクトを定義する。

その後、Y座標の位置が同じ且つ、向きがRのオブジェクトのX座標が、向きがLのオブジェクトのX座標より小さいものが存在するかを判定する。

実装時、バグがありサンプルが通らずで苦戦するも、なんとか解決してACを取ることができました。

30分22秒で3完。もう少し早く通せたらなーという印象。

提出コード

https://atcoder.jp/contests/abc243/submissions/30049551

D問題

D - Moves on Binary Tree

この問題に関しては、早めに解法が浮かんだので助かった。

現在位置Xに対して、二分木上の移動後の位置は以下の式で計算できる。

  • Uの場合、\lfloor X \div 2 \rfloor

  • Lの場合、X \times 2

  • Rの場合、(X \times 2) + 1

で、これをまともに計算するとlong型の最大値を普通に超えてしまうので、2進数に変換した値を文字列として扱い、上記の計算を行うようにする。

すなわち、現在位置Xを2進数の文字列表現に変換したSに対して、

  • Uの場合、Sの最後の文字を削除。

  • Lの場合、Sに、0を追加。

  • Rの場合、Sに、1を追加。

これを最後まで処理し、long型に戻した値を答えとすればOK。

なかなか早い時間でACを取ることができました。

38分59秒で4完。順位を確認すると、1200位前後ぐらいだったので、なんとか連敗は止まりそうというところで、少しほっとしました。

提出コード

https://atcoder.jp/contests/abc243/submissions/30054108

E問題

E - Edge Deletion

順位表のAC数から見て、やたらと難しそうな印象という問題。。

とりあえず、見覚えのありそうな解法から試してみる。

まず各辺より、コストの低い順に優先的に採用し、グラフを連結にするために必要な辺の数をすべての辺の数から引いた値が答えとする。が、、これはサンプルでWA。

それならばと、コストの高い方を優先にしてみたら、、と実装を変えてみるも通るわけなく、サンプルでWA。。

で、落ち着いて制約を見てみると、なんかワーシャルフロイド法を使えと言っている感じがするので、とりあえずワーシャルフロイド法を書いてみる。

その後、入力された各辺のコストより、最短経路のコストが小さいケースの数を答えとするという実装をしてみる。が、、これもサンプルが通らず。。。

で、いろいろ試行錯誤してみたものの、サンプルが通らずで結局時間切れということになりましたとさ。。

で、解説を見てみると、ワーシャルフロイド法を使うところまではあっていた模様。辺のコストが同一の回り道がある場合の考慮が必要だったようですなー。。

F問題

F - Lottery

コンテスト中、チラ見はしてみたものの何もわからず。

G問題

G - Sqrt

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

Ex問題

Ex - Builder Takahashi (Enhanced version)

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

これまでの実績

とりあえず、連敗を6で止めることができました。

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

総括

今回、パフォーマンス的には大分Eの難易度に救われた感じがします。

最近の負けパターンとしては、緑上位、もしくは水色下位当たりの問題が解けずで結局パフォーマンスが緑下位でとどまってしまうというのが多かったのですが、今回はDまでが少し早めに解けてくれて、水色パフォを維持したまま逃げ切りというような感じですね。

ということで、連敗は止まったものの、まだまだ楽観はできません。今できることは水色にふさわしい実力をつけるべく精進を重ねていくしかないというところでしょう。

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

AtCoder Beginner Contest 242 参加記

2022/3/5に開催されたAtCoder Beginner Contest 242に参加しました。

atcoder.jp

ここ最近のRatedコンテストの成績は惨憺たるもので、現在5連敗中。レートの方も3桁落ち目前というところまで落ちてしまいました。。

ということで、なんとか今回こそ連敗を阻止するぞ、という気持ちで臨むこととしました。

今回の結果

で、、、そんな思いも虚しく、今回も3完という結果となりました。。。

ABC242結果
ABC242結果

パフォーマンスは、またまた緑の下というところで、今回も下げ。結局、レートは3桁落ちになりましたとさ。

振り返り

今回は、ジャッジのトラブルやこちら凡ミスもあり、なんかグダグダになってしまいました。

ABC242提出結果
ABC242提出結果

A問題

A - T-shirt

X \le Aの場合は必ずもらえるので、確率は1。

X \gt Bの場合はもらえないので、確率は0。

あとは上記以外の場合をどうするかというところですが、とりあえずそれっぽい計算をしてから提出。

で、、結果を確認しようとしたら、WJ...のまま一向に判定される気配がない。

明らかになにかおかしいと思いつつも、ツイッターとかみても何もアナウンスはなさそうなので、とりあえずB問題に進みました。

・・・・・

で、C問題を出そうとしたぐらいで、Aの提出がWAになってることに気づく。というか、そもそも出力すらしていないという凡ミス。。。

で、とりあえず標準出力に答えを出すようにして提出したら、これもWA。。。というか、確率の計算がめちゃくちゃだった。。。

で、確率計算を\frac{C}{B - A}という形でちゃんと実装したらやっとこさACが取れましたとさ。

24分9秒の2ペナで3完。大分グダグダになってしまいました。。。

提出コード

https://atcoder.jp/contests/abc242/submissions/29881116

B問題

B - Minimize Ordering

文字列S中の文字を昇順ソートして出力するだけの問題。

とりあえず実装して、サンプルまで通ったので提出。が、、待てど暮せど、ジャッジ待ちのまま。。。

とりあえず、結果はそっちのけでC問題に進みましたが、後で確認するとACでした。

8分4秒で1完だったようです。

提出コード

https://atcoder.jp/contests/abc242/submissions/29871536

C問題

C - 1111gal password

なんかDPを使う系の問題のような気がする。最近のABCのC問題はDPを出してくるのか。。

とりあえず、DP配列を作る。dp \lbrack i \rbrack \lbrack j \rbrack := i桁目がjであり問題の条件を満たす数のパターン数とする。

あとは、漸化式を適切に立てて計算するだけ。実装して提出みたら、あっさりとACが取れてくれましたとさ。

あとで解説で復習したら、だいたい同じことをやっていたので、妙に安心しました。

22分15秒で2完。で、ここでまだA問題が通ってないということに気づいてしまいました。。

提出コード

https://atcoder.jp/contests/abc242/submissions/29880123

D問題

D - ABC Transform

超絶ややこしそうな問題という印象のD問題。

解法を立ててみるまで、サンプルの文字列の遷移をメモ帳に起こしたりして法則性がないかをみるなどし、だいぶ長考しました。

で、思いついた内容としては以下の通り。

  • t = 0の場合、答えはS_kとなる。

  • k = 1の場合、答えはS_1からt文字分進めた文字になる。

  • kが偶数の場合、答えはS^{t}k - 1文字目から1文字分進めた文字になる。

  • kが奇数の場合、S^{ (t - 1) }\lceil \frac{k}{2} \rceil文字目から1文字分進めた文字になる。

  • tkの制約がやたらと大きいが、S^{ (t - 1) }の状態を見る時に、kを2で割る計算が行われるため、最大でも60回程度の状態遷移を行えば答えに辿り着きそう。

ということで、なんとか実装に漕ぎつけようとしましたが、サンプルすら通せずで時間切れという結果になりましたとさ。。

で、悔しかったので、コンテスト終了後もなんとか解説を見ずに粘って実装したところ、なんとかコンテスト後だけどACがとれました。

https://atcoder.jp/contests/abc242/submissions/29905495

結局ノーヒントで解くことはできたけど、コンテスト時間内で解くのはまだまだ厳しいなーというところです。

E問題

E - (∀x∀)

問題をチラ見してみて、なんとか解けそうな見た目をしているという印象だったが、まずはD問題を解こうと思ったので今回は諦め。

また、自力で解いてみることにします。

F問題

F - Black and White Rooks

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

G問題

G - Range Pairing Query

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

Ex問題

Ex - Random Painting

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

これまでの実績

現状、6連敗中。。。レートも3桁に落ち、水色がどうとか言える状態ではなくなりつつあります。

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

総括

ここ最近は、難易度の高い問題を中心に精進を続けているのですが、コンテストでの結果が全く出ずという状態です。

普通なら、このへんで心が折れるというところかもしれませんが、あまり悲観的になっても仕方がありません。淡々と精進とコンテスト参加を継続していこうと思います。

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

MC Digital プログラミングコンテスト2022 (AtCoder Heuristic Contest 008) 参加記

2022/2/12-2022/2/26に開催されたMC Digital プログラミングコンテスト2022 (AtCoder Heuristic Contest 008)に参加しました。

atcoder.jp

ヒューリスティック系のコンテストは、AHC001以降全く参加をしておらずだったのですが、最近ヒューリスティックのレーティング機能もちゃんと整備されたということらしいので、今回久々に参加をしてみることにしました。

まあ、とりあえず悪い成績でも落ちないレーティング制度らしいということと、なんか出しておけば一応プラスにはなるかなーという甘い気持ちで臨んでおります。

今回の結果

で、今回の結果ですが、「とりあえずは参加はしました」という結果しか残せませんでした。

AHC008結果
AHC008結果

パフォーマンスは、一応茶色上位ぐらい。元が灰色コーダーという状況だったので、レーティング的には一応大幅なプラスになりましたとさ。

振り返り

本当に、とりあえず出してみただけという結果です。

AHC008提出結果
AHC008提出結果

A問題

A - Territory

今回の問題ですが、とりあえずプラスになる実装を行うというところから実装が重いという印象。とりあえず、考察らしきものをしてみるが、どうすればいいのか皆目見当が付きませんでした。

で、そんなこんなでコンテスト終盤まで差し掛かったものの、ほとんど何もできていない状態に。。

まあ、とりあえず何か提出を、ということで人間プレイヤーは300ターン何もしないという一番シンプルな出力を出すプログラムを出してみましたとさ。

で、順位表を見てると同点の人が結構沢山いるんですね(笑)

ということで、全ターン何もしないことで得られるスコアは、34322909点であるという事の知見を得ましたw

その後は、まともな実装がろくにできずに終了です。

最終提出コード

https://atcoder.jp/contests/ahc008/submissions/29634048

これまでの実績

レート的には結構な上昇。まあ今回は参加賞をいただいたようなものです。

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

総括

今回、ほぼ気まぐれで参加してみたヒューリスティックコンテストですが、ほぼ何もできずに終了という残念な結果に。

ただ、上位陣の実装などをみてると勉強になる部分も多々ありますので、また時間を見つけて一度この問題に取り組んでみたいと思います。また、次回以降のAHCはとりあえず参加はしていこうと思います。

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

AtCoder Regular Contest 136 参加記

2022/2/27に開催されたAtCoder Regular Contest 136に参加しました。

atcoder.jp

ここ最近レート上がってねーな。。とか思ってたら、いつの間にか直近のコンテストは4連敗という体たらく。

とりあえず今回は連敗を止めねばという気持ちで臨むこ事としました。

今回の結果

で、今回も、なんと1完という体たらく。。競プロ難しすぎ。

ARC136結果
ARC136結果

パフォーマンスはギリギリ緑という所で、都合5連敗。4桁レートの維持も危うくなってきました。。

振り返り

Bで悪戦苦闘したものの、結局見当外れのことをやってたようです。

ARC136提出結果
ARC136提出結果

A問題

A - A ↔ BB

文字列Sを先頭から見ていき、以下の要領で、答え用の文字列S^{\prime}に文字を追加する。

  • Aは辞書順最低なのでそのままS^{\prime}に追加する。
  • Cは変換不可なのでそのままS^{\prime}に追加する。
  • BABBBABと変換すると辞書順が小さくなる。変換後、AS^{\prime}に追加する。
  • BBAに変換してS^{\prime}に追加する。

この要領で実装し、サンプルが通ったので提出したところ、問題なくACが取れましたとさ。

15分19秒というまあまあのタイムで1完。

提出コード

https://atcoder.jp/contests/arc136/submissions/29743239

B問題

B - Triple Shift

とりあえず、数列ABに現れる数字の種類と出現数が一致しない場合Noというのはわかるが、その後がわからない。

ただ、数字の移動自体は結構自由にできそうだという印象である。

よって、数列Aを数列Bの後ろ3要素より前の要素まで並びを同一にしてから、数列Aの残りの3要素の並びで数列Bの後ろ3要素が構成できるかという判定にしてみる。

ただし、実際に並び替えをシミュレーションするのは処理が大変でTLEになりそうなので、数列Aを後ろから見て、数列Bの後ろ3要素と同じ数字を並びを変えずに取得。そこから、Bの後ろ3要素と同じ並びに変更できるかという判定で実装してみた。

で、これがサンプルまで通ったものの、WAを喰らう。。。

では、数列Aを前から見ていく方針に変えたらどうかということで実装するも、これもWA。。

結局、時間切れまでWAが取り切れずということで終了となりましたとさ。

で、コンテスト後に解説を見ると、転倒数の性質を使うとのこと。そんな発想は全く無かったなー。。

C問題

C - Circular Addition

ワンチャンあるかと少し目を通してみたものの、何もわからずで諦め。

D問題

D - Without Carry

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

E問題

E - Non-coprime DAG

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

F問題

F - Flip Cells

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

これまでの実績

水色どころか、緑をキープできるかという事が当面の問題になってきそうです。

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

総括

今回のB問題は水色Diffだったようですが、これぐらいの難易度の問題がBにくると、良いパフォーマンスが出ませんねー。

この水色Diff辺りが攻略できていないという事が、最近のコンテストでじり貧になっている要因と思いますので、本腰入れて水色Diffあたりの問題の復習にとりくんでいきます。

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

AtCoder Beginner Contest 241 (Sponsored by Panasonic) 参加記

2022/2/26に開催されたAtCoder Beginner Contest 241 (Sponsored by Panasonic) に参加しました。

atcoder.jp

実はこの日は飲み会などがあり、直前まで参加するかどうか迷ってたのですが、コンテスト開始の10分前に帰宅できたので、この際参加してみることにしました。

とりあえず毎度のことですが、レートが上げられるように頑張ろうという感じです。

今回の結果

で、、今回のABCはなんと3完という体たらく。。うーん、まあ比較的Dが難し目だったかなー。

ABC241結果
ABC241結果

今回も緑下位ぐらいのパフォーマンスということで、都合4連敗目を喰らう羽目になりましたとさ。

振り返り

D問題で完全に判断を誤ってしまいました。

ABC241提出結果
ABC241提出結果

A問題

A - Digit Machine

k = 0を初期値として、k = a_kという処理を3回行った時のkが答えとなる。

実装して、問題なくACを取ることが出来ました。

4分3秒で1完。

提出コード

https://atcoder.jp/contests/abc241/submissions/29664853

B問題

B - Pasta

配列A,B双方を昇順ソートしておき、マッチング処理を行う。

配列Bの要素が全てマッチする場合はYesと表示、それ以外はNoとする。

ちょっと、実装でもたついてしまい、時間は少しかかりましたが、こちらも問題なくACを取れました。

19分48秒で2完。

提出コード

https://atcoder.jp/contests/abc241/submissions/29677674

C問題

C - Connect 6

問題を一読すると、なんか五目並べならぬ、六目並べという感じがするこの問題。

全てのマスについて、右方向、下方向、右上方向、右下方向の連続6マスをチェックし、6マスの内4マス以上が黒く塗られていれば、あとは高々2つを塗ることで黒6つ以上の連続は可能となる。

あとは、範囲外の参照に気をつけながら実装すればOK。

ということで、少し実装に苦労したものの、あっさりとACが取れてくれましたとさ。

41分7秒で3完。ここぐらいで、2000位以内には行っていたので、もしかすると好成績いけるかという感触はありました。

提出コード

https://atcoder.jp/contests/abc241/submissions/29687610

D問題

D - Sequence Query

クエリを処理していく系の問題。愚直に実装するとTLEになるやつなので、なんらかの工夫は必要という感じだが、すぐにはわからん感じ。

とりあえず、ソート処理を全体で1回に抑えようという方針にしてみる。

数列Aを、ペアオブジェクト(x, 何回目のクエリで追加されたか)として配列で管理し、全てのクエリを先読みして数列に値を追加して1度昇順ソートする。その後、2と3のクエリを処理する際、二分探索で配列を探索する位置を決定し、何回目のクエリで追加された数字かを考慮しながら順に探索するという実装を行なってみた。

で、なんとかサンプルは通ったので、一度提出をしたみたところ、TLE、WA、REのトリプルパンチを食らってしまう。。

とりあえず色々見直してみるが、解決の糸口すら見えずで、このまま時間切れとなりましたとさ。

E問題

E - Putting Candies

ワンチャンあるかとチラ見をしてみるが、すぐにわかりそうにないため諦め。

F問題

F - Skate

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

G問題

G - Round Robin

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

Ex問題

Ex - Card Deck Score

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

これまでの実績

これで都合4連敗。。。。うーむ。。

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

総括

ここ最近のコンテストでは、なかなか思うような結果が出ず、壁にぶち当たっているような印象がしますが、ここを乗り越えてこそ自分の成長があるものと考えております。

今後も淡々と精進を行い、諦めずにコンテストの参加を継続していきます。

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

AtCoder Beginner Contest 240 参加記

2022/2/20に開催されたAtCoder Beginner Contest 240に参加しました。

atcoder.jp

ここ2回のコンテストでは思うようなパフォーマンスが出せず、共にレート下げという結果を食らっています。今回はなんとか連敗を止めようという思いで臨むこととしました。

今回の結果

で、、今回のABCも結果は4完となりました。。。

ABC240結果
ABC240結果

パフォーマンスはぎりぎり緑というところで、今回も大きな下げを喰らうこととなりましたとさ。

振り返り

Aでつまづき、Cで遅れをとり、Eはまったくわからずでした。

ABC240提出結果
ABC240提出結果

A問題

A - Edge Checker

b - a = 1だけが条件というわけではなく、bが10、aが1の時も考えないといけないなーという感じの問題。

そこでmodをとれば1つのシンプルな式に収まるのでは?という思いがふとよぎった。ということで、

\left| (a \% 10) - (b \% 10) \right|  = 1 が成立すればYesという感じで実装して提出。うむ、非常にシンプルに収まった!

が、、これがあえなく1WAを喰らって撃沈しました。。というか、a = 9, b = 10の時に対応できてない。。

ということで、b = 10のときに、a = 1 or a = 9ならYesという雑な判定文を追加したりしてなんとかACを取ることが出来ましたとさ。

6分22秒の1ペナで1完。先が思いやられます。。

提出コード

https://atcoder.jp/contests/abc240/submissions/29513354

B問題

B - Count Distinct Integers

配列aの各数値を全てSetに突っ込んでサイズを出力するだけの問題。こちらは問題なくACを取れました。

8分48秒の1ペナで2完。多少遅れを取り戻しました。

提出コード

https://atcoder.jp/contests/abc240/submissions/29515769

C問題

C - Jumping Takahashi

一読してわからず。。全探索すると、最悪2^{100}のパターンを計算しないとなので、これはTLE間違いなし。

かといって、全部試す以外に解く方法など思いつかずということで、完全に手詰まりとなり、途方に暮れてしまいました。。

10分以上考えて良い考えが浮かばすなので、一旦D問題を解いてみることに。。

・・・

で、、なんとかD問題を解いた後にこの問題の制約を見直してみると、これナップサックDP問題やんということがわかった!

ということで、DP配列は、dp\lbrack i \rbrack\lbrack j \rbrack := j回目のジャンプで、座標iにいる場合1とする。

遷移は、dp\lbrack i \rbrack\lbrack j - 1 \rbrack = 1の場合、dp\lbrack i +a_i  \rbrack\lbrack j \rbrack = 1およびdp\lbrack i + b_i \rbrack\lbrack j \rbrack = 1とする。

最後に、dp\lbrack X \rbrack\lbrack N \rbrack = 1の場合、Yesと出力すればよいかと。

ということで、実装してみたら、あっさりとACが取れてくれましたとさ。

64分42秒の1ペナで4完。なんとか爆死を免れたかと。。

提出コード

https://atcoder.jp/contests/abc240/submissions/29536964

D問題

D - Strange Balls

一読して、スタックを使えば実装できるかな?と思ったが、普通に配列のみを使用してもなんとかなるかと予想。

とりあえず、筒の状態を管理する2次元配列を以下の内容で定義する。

  • dp\lbrack i \rbrack\lbrack 0 \rbrack := 現在筒の中の下からi番目にあるボールの種類

  • dp\lbrack i \rbrack\lbrack 1 \rbrack := i番目のボールは、何個連続している状態か

またrを現在筒の中にあるボールの個数として定義する。あとは以下の要領で実装。

  • r = r + 1とし、dp\lbrack r \rbrack \lbrack 0 \rbrack a_iをセットする。

  • dp\lbrack r - 1 \rbrack \lbrack 0 \rbrack = a_iの場合、 dp\lbrack r \rbrack \lbrack 1 \rbrack = dp\lbrack r - 1 \rbrack \lbrack 1 \rbrack + 1 とする。
    dp\lbrack r - 1 \rbrack \lbrack 0 \rbrack \ne a_iの場合、 dp\lbrack r \rbrack \lbrack 1 \rbrack = 1 とする。

  • dp\lbrack r \rbrack \lbrack 0 \rbrack = dp\lbrack r \rbrack \lbrack 1 \rbrack の場合、ボールを消す処理を行う。r = r - a_iとする。

以上の要領で、配列aの全要素について処理を行い、最後にrの値を出せば終了。

少し不安もありましたが、なんとか一発でACを取ることが出来ました。

35分56秒の1ペナで3完。この後解けてなかったC問題と解いたりなどしました。

提出コード

https://atcoder.jp/contests/abc240/submissions/29528456

E問題

E - Ranges on Tree

昨日に引き続き、苦手なグラフ問題がEに登場。。。

さらに問題文を見てみましたが、あまり見慣れない集合に関する記号がふんだんに使われており、これがイマイチ何を言いたいのかよくわからない。。。

とりあえず、AC数は多そうなのでなんとかなるかと検討に取り組んでみましたが、とりあえず解法への糸口が見えない。なんだろう。。木DPとやらをするんだろうか。。。

ということで、木に関するDPについて調べたりなどしましたが、結局なにもわからずのままで時間切れという結果となりましたとさ。

F問題

F - Sum Sum Max

ワンチャンあるかとチラ見をしてみるも、何もわからずで諦め。

G問題

G - Teleporting Takahashi

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

Ex問題

Ex - Sequence of Substrings

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

これまでの実績

水色に向けての道のりも、また一歩後退する形となりました。

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

総括

今回の土日連続ABCコンテストはともに4完で連敗。苦手分野がE辺りにくると大分厳しいという印象です。

ただ、こういう苦手を克服していかないと上の色は目指せないことは明白なので、苦手意識をなくす為にもコツコツと復習に臨むしかないというところです。

だた、AHC008は一応登録しているので終了までに最悪提出だけはしておこうかと思ってるのでこれの対応も必要。うーん、リアルの業務より忙しい。。

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

デンソークリエイトプログラミングコンテスト2022(AtCoder Beginner Contest 239)参加記

2022/2/19に開催された、デンソークリエイトプログラミングコンテスト2022(AtCoder Beginner Contest 239)に参加しました。

atcoder.jp

本来は先週行われるはずだったこのコンテストが本日に延期になったので、今週は土日連続でABCコンテストが行われることに。

ということで、今週は土日での連勝が目標。まずは土曜のこのコンテストでレート上げを目指ざそうという気持ちで臨むことにしました。

今回の結果

しかしながら、今回はあえなく4完止まりとなってしまいました。。

ABC239結果
ABC239結果

パフォーマンスは、緑の下位ぐらいしか出ておらず、結局今回は大きな下げを喰らうことになってしまいました。。

振り返り

E問題のTLEを取ることが出来ませんでした。

ABC239提出結果
ABC239提出結果

A問題

A - Horizon

問題文に書かれている通りの式を実装するだけのA問題。問題なくACを取ることが出来ました。

2分40秒という、まあまあ普通のタイムで1完。

提出コード

https://atcoder.jp/contests/abc239/submissions/29428568

B問題

B - Integer Division

X \ge 0の場合は、普通に10で割った結果を出せば良さそうだが、X \lt 0の場合は調整が必要くさい問題。

よって、X \lt 0の場合、X = X - 9と調整して、10で割れば良いかと実装して出したらACが取れましたとさ。

なお、Pythonで実装する場合はこんな調整は必要ない模様。このような言語による仕様の違いについての知識を得ることができました。

5分28秒という、これもまあまあ普通のタイムで2完。

提出コード

https://atcoder.jp/contests/abc239/submissions/29433081

C問題

C - Knight Fork

問題文中にある図より、平面上の格子点からの距離が\sqrt{5}であるということは、x方向に\pm2かつy方向に\pm1移動した点、またはx方向に\pm1かつy方向に\pm2移動した点である。

よって(x_1,y_1), (x_2,y_2)それぞれについて、距離が\sqrt{5}の格子点を全て求め、座標が一致する点があればYesとなる。

あとは、実装と提出をして、無事ACを獲得。

14分28秒での3完。ここまではまあまあ普通かなと。

提出コード

https://atcoder.jp/contests/abc239/submissions/29441593

D問題

D - Prime Sum Game

Paizaの問題でありがちなぐらい、制約が緩かったので全探索でなんとかなりそうな問題かと。

前計算として、エラトステネスの篩の要領で、200までの整数が素数か否かを判定するための配列を用意する。

あとは、先手が選ぶことができる全ての数値に対して、後手が素数を作れるのであれば後手必勝。そうでなければ、先手が必勝となる。

前計算部分で少し手間取ってしまいましたが、なんとか実装に漕ぎ着け、ACを取ることが出来ました。

32分32秒で4完。ここまで大分順調にきました。

提出コード

https://atcoder.jp/contests/abc239/submissions/29451738

E問題

E - Subtree K-th Max

グラフ問題は苦手なんだが、時間は1時間以上あるのでなんとかなるかという思いで臨んでみることに。

まずは、根付き木をDFSで探索し、各ノード配下にある数値Xの集合を配列で管理する。その後、それぞれ降順ソートして、各クエリに答えれば良いかということでまずは実装。

一応サンプルは通ったが、ソートの回数が多めということに懸念が残る。まあとりあえず出してみるかという感じで提出したら、案の定TLEを食らってしまいましたとさ。。

とりあえず、WAはなかったので、性能改善すればいけるかということで色々工夫してみる。クエリのKの最大値が20ということで、サイズが20を超えてきた場合、配列のサイズを減らせばなんとかなるかということであれこれ頑張ってみるが、どんなに悪あがきしてもTLEは取れずでした。

結局、この問題が解けずで時間切れ。なんでこの問題が2000AC超えしてるのかよくわかりません。典型なのか?

F問題

https://atcoder.jp/contests/abc238/tasks/abc239_f

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

G問題

G - Builder Takahashi

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

H問題

Ex - Dice Product 2

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

これまでの実績

まだまだ水色への道は遠いです。。

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

総括

今回は苦手のグラフ問題でつまづいてしまい、レート下げという結果となりました。

まだまだ水色付近のパフォーマンスが出せる実力がないということを痛感させられる結果でしたが、これにめげずに地道に精進を続けていきます。

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