2023/7/31に開催されたAtCoder Grand Contest 063に参加しました。
まだ入水できていない状況ゆえ、今回もRated参加はできませんでしたが、経験を積むために参加するという感じです。
とりあえず、今回も1完以上が目標です。
緑コーダーですが、参加します。
— devgenjin77 (@devgenjin77) 2023年7月30日
今回も1完目標で頑張ります✊
AtCoder Grand Contest 063 - AtCoder https://t.co/yRpVEiPRp1
今回の結果
なんとか1完確保しました。
Unrated参加につき、もちろんレートの変化はなし。
仮にRatedだったら水パフォはあったようで、少し勿体無い気もしますが、まあこれも仕方なしです。
とりあえず今回1完確保しました。
— devgenjin77 (@devgenjin77) 2023年7月30日
次はRated参加できるように頑張ります。
devgenjin77さんのAtCoder Grand Contest 063での成績:758位#AtCoder #AGC063 https://t.co/dhEXTSh6C6
振り返り
Bは惜しいところまで行きましたが、解き切ることができませんでした。
A問題
プレーヤーが取れる戦略としては、相手が勝ちとなる数を小さい順から指定していくことで相手の勝ちを減らしていくというのが最適なように思える。
サンプルで試しても確かにその通りになるということで、早速実装に着手。
Aliceの手番の場合、内にあるB
の位置で、まだに設定されていない数をとして指定(無い場合は何も指定しない)。逆にBobの手番では、内にあるA
の位置で、まだに設定されていない数をとして指定する処理を行い、各ターンごとのmexにある文字で勝者を出力するという実装で提出。これが、なんともあっさりと通ってくれました。
12分40秒で1完。とりあえず0完が回避できて、良かったです。
提出コード
https://atcoder.jp/contests/agc063/submissions/44111024
B問題
から始まる列でないと、生成可能にならないと思われるので、の候補としては、となるに限定される。
また、を固定してを右に伸ばした場合、途中で生成不可能な列になったら、それ以降は生成可能にならないと思われる。
よって、となる全てに対して、それぞれをと設定した時に、どこまで生成可能な列として右に伸ばせるかが計算できれば答えは求まるかと。
が、、それを実際に形にするのは中々難しい。。
まずは、各列に対してどこまで右に生成可能な列として取りうるかを管理する配列を管理することを試してみる。これで、を後ろから見ていき、[tex:A_i + 1 = A{i + 1}]の場合に[tex:B_i = B{i + 1}]とすれば、繋がり管理できるのではと思いましたが、微妙に上手くいかず。。
一応、途中で途切れた場合は一旦スタックに要素を積むなどの処理も施すことで、サンプルまで通すことはできましたが、実際提出してみると半分ぐらいがWAという散々な有様。。
そんなこんなで、とりあえず2時間弱取り組んで見ましたが、WAの原因が見えずで、この問題は諦めることに。。
コンテスト残り時間も1時間弱はありましたが、他の作業もあったので、結局今回は1完で撤退することにしました。
C問題
問題すら見ておりません。
D問題
問題すら見ておりません。
E問題
問題すら見ておりません。
F問題
問題すら見ておりません。
これまでの実績
UnRatedにつき、レート変化はありません。
総括
解説を見てると、今回のB問題も惜しいところまで来てたかという感じでしたが、ここでACを取りきれないのが自分の実力不足というところですね。今回も1完取れたのが、せめてもの救いという所でした。
さすがに、AGCをUnratedで参加するのも今回限りにしたいところ。次回のAGCまでには入水できるよう、改めて精進に取り組んでいきます。
ということで、また次回も頑張ります。