JOI2025参加記
Day0
交流をしました。
橋を作るときに芸術点で勝とうと無限回主張して何もかもが間に合わず...orz
Day1
比較的ライブラリの練習もしており、まぁひとまずボーダー前後の点数を取ろうという気持ちで臨みました。
exhibitionを読むとUC London既出ですねぇとなるがLinkCutTreeが書けず19点をひとまず取る。(嘘貪欲にハマっており、この時点で2時間弱だった気もする。)
exhibitionと並列でfortuneをやっていたが、ジャッジバグってて草とか思いながら手元のコードは修正して動かしていた。(これで競技が30分延長されてウケ)
適当に自明2進法をして47点を取り、3進法だとL=24くらいまでいけるなぁとか思っていたがTravelが解けたので実装をする。
Travelが最後まであわず自明10点で終了。
19-47-10で17位でした。(fortune最高点でワロタ、人々は何をしているんだ...)
Day2
1日でついた差は1日で取り返せる。
最初に謎コミュニケーションを見るとやるだけと書いてあるのでやるだけをする、が実装が5時間合わず、実装飽きたときに書いたanbulanceの焼きなましの9点のみ。
9-0-0で最低点でした。
あの??????????
なんとラストイヤーが終了してしまいました。悲しい。
day N+1
気楽な気持ちで挑みます。output only出ろ~とhiikunZと言っていたら出て面白い。
それ以外のBatchが本当に解けず、24-0-100でした。
day N+2
コミュニケーション張りつきをすることを決意。
事前に100点を取ったらトイレに行くと周りに圧をかけました。(グレーラインすぎる)
1時間くらいごちゃごちゃしていると、完全二分木まではわかり、木の時もごまかせば行けそうという気持ちになったので、早めにトイレに行き周りに圧をかけます。
しかし実装が合わず結局4時間過ぎたところくらいで100点を取りました。
安心して軽めのガッツポーズをしたんですがMtSakaには見られていたらしい。
適当に部分点を回収して100-0-15で最終16位でした。
Batch77点 非Batch247点でワロタ。
橙コーダーとしてあるまじき順位。
hiikunZの逆転とかshiomusubiの安定感とかやっぱすごいなぁという感じ。
MtSakaが幸せそうで面白かった。
来年以降チューターになりたいです。運営頼んだ!
JOIでできるかもしれなかった悪いこと Part.1
注意
フィクションです
実際にJOIでして怒られても僕は責任を取りません
リバースエンジニアリングは禁止されていたはず?
あと今はできるとは限りません(年々対策が強化されており...)
好評なら次を書きます
今年のJOI本選って各テストケースごとの結果見れたっけ?忘れました
今年の本選を解いていきましょう
A,B,Cは当然解けますね
しかしボーダーは300点では届きません(悲しい)
Dを見ると...?
D - 長いだけのネクタイ 2 (Just Long Neckties 2)
うーん、1点もわかりません

うーん、、

うーん、、、、

制約21でワロタwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
はい
では解いていきましょう

適当にhashを作って時間に書き出せるか確認するよ~

よさそう
こんな感じの100通りくらいの値を判別するHashを2つ提出すれば大体のケースのHashが一意に定まりそう
これをしながら1~21まで出力するとよさそう
最近のChatGPTって優秀なんですね~(Hashの衝突については確認してないけど...)

実は1~21まで聞く必要はなくて、1~20でいいですね(YesNoだと片方でいいみたいな話)

答えが6になるケースないんですね、おもろ
埋め込みを頑張ると...

は???
ChatGPTが途中から嘘ついてて草
直します

うーん、実装が多少悪いのも相まって、Hashを実行時間に書き出すのに20ms以上の誤差が出ていそうです?入出力高速化や25ms単位の出力にして検証しました
何回か試してみたんですがたまに少し遅くなることがありそうで、Hashの特定には少なくとも2回はやったほうがよさそうという気持ちにはなりました。
余談なんですが、少し遅くなる の話なんですが、ちょうど2倍時間かかっているのが2ケース見つかったので、僕のコードのバグかあるいはAtCoderのジャッジのなんかなのかなぁと思っています。

まだWAですねぇ...
よく見るとHashが衝突している(おい)
適当にHashを増やします

草
提出回数は31回でした。だいぶ無駄は多いですがJOIの提出回数制限に収まりますね。
これは応用できますよね?
一般に、各入力に対して入力から出力の候補をC個簡単に列挙できるとします。(例えばYesNoであればC = 2)
Hashの時間への書き出しと、入力と正しい出力の対応の確認は同時に行えるので、
max(2log(100, テストケース数), C) + 1回の提出でできそうです。
(2log(100, テストケース数)の部分は2回実行×1回で100通りの情報を送れることを仮定しているので、適当にやればよくも悪くもなりそうです。)
ところで
テストケースごとに実行時間が見れるコンテストなんてものはほぼなくなってしまった(JOI...)のでこれは使い道がなさそうです。(かなしい)
一応実行時間が最大値であるものから順にHashと正しい出力を確認していけばO(C*テストケースの数)回の提出ではできそうです。
追記:
提出リンク
Submission #64067778 - JOI 2024/2025 本選 過去問
JOI2024参加記
参加記です
一次予選
はい
二次予選
はい
本選
day1
開会式
はい
チューター企画
初手でcyclic shiftするコードを書いて投げてみんなで手でやった
問8 問9をチームメイトと協力して通せたのがかなり大きい
プログラミング部分を全部担当していたが、1問間違えてしまってかなり悔しい
10^12は13桁!(戒め)
day2
はい
JJMO2023予選を振り返って
対策とか
特に何もしていなかった。何冊か幾何とかの本を買ったがまだ終わっていない。競プロのおかげでC分野は多少仕上がっていた。
当日
10時くらいに起きた。そのあと二度寝したが普通に間に合った。めちゃめちゃ眠かったけど大丈夫だった。
競技開始後
6くらいまでは特に問題なく終わった。6で前日にやった積の和典型がでてよかった。
ここで7,8,9に目を通して5分くらい机にぐだーってなって休憩する。
7が多少不安で、本当に達成できてるか不安だったので適当に数を割り当てて安心した。
8はよくわからなかったけどBC:AD=1:5が出た(逆かも)ので名前がよくわからないぶらーまぶぐたみたいな名前のやつを使って二次関数の最大値を求めるのに帰着した。実際に存在するか不安だったがまぁ大丈夫でしょうということで。
9最初最難に感じて飛ばした。
10適当にやると12x+6でおしまい!笑ってなって自信満々に答えて次に進んだんだが全然そんなことなかったのでちゃんと詰めなければいけなかった。ここは反省
ここで9に戻ってくる。オーダーが指数的に増えそうな気がしたのでN点を決め打ってのこりが一意に定まるみたいなのを考えた。なかなか点の打ち方が思いつかなくて焦ったが、真ん中からやってったら一瞬だった。これはおもいつけてよかった。
11 2022頂点の完全グラフにのこりの一頂点を付け加えることを考えて、頂点2023の色をAとして{A,A,B}の組を消費して1本辺を増やせることまで示したが、計算するかーってなったときに謎に{B,B,A}も消費してしまい間違えた。きちんと見直しをすべきでした。反省。
12 なにもわからなかった。相似とかで13*(相似比)とかになるんかなーとか思って適当に117/10にしたが全然違った。
ここまでで2時間ちょい、適当に問題を眺めながらぼーっとしてすごす。
終了後
sfliedとSakem1の11完、(不特定多数の)10完を確認してかなり悔しいになった。
10と11は絶対に落としちゃだめだし、12もそこまで難しくないらしいのでなぁ。
毎回ケアレスミスを言い訳にしていてダメだし、本選に対するモチベが落ちてきていてあまり良くない。見直しをしよう(自戒)。