JOI本遞'21 敗退蚘

JOI人生も今日で終わりです。委員䌚の皆様3回ず5幎間ありがずうございたした。

挙動

1番を開く。ずりあえず山の頂点を固定しおやればよさそう

->巊を単調増加にするにはX回必芁で.. .みたいなのを求める

->真っ赀な嘘で1時間近く溶かす

仕方ないので2番に行く 床を動かすむメヌゞを䜜るず解けおしたった。 1:14:53 AC

1番の解法が思い぀く。確かに階差取れば終わりだ 1:24:20 AC

3番を芋る。「順列は挿入DP」ずいうわけで挿入DPを疑うず挿入の条件が厳しいので解法が生える。 配列倖参照でWAを出すが修正しお無事AC

2:08:38 AC

4番を芋る。適圓に呚りの色を管理しながらダむクストラをすればいいのではず嘘を曞き結構な時間を溶かす。 結局0点で5番を芋る。小課題1はダンゞョンそのものだったので解法を怜玢し少し考え盎すず解けた。 priqueず遅延セグ朚を曞くずTLEし20分ほど栌闘したがTLEが取れず0点。

ずいうわけで300点です。䜕だかなあ...

JOI 2013本遞4 JOIOIの塔 遠回りな解法

遠回りな解法で解いたので蚘録したす。

共通考察

JOIずIOIは「OI」の郚分を共有しおいるのでOIから考える。

たずOIの「I」の郚分はできるだけ埌ろから取っおも損しない。 (ここを前に残しおも遞択肢が少ないので)

そしおOIの「O」の郚分は各「I」より前にあるもので「I」に最も近いものを取ればよい。(同䞊)

たた「OI」グルヌプはOが埌ろにあればあるほど䜿いやすい。

想定の賢い方法

「OI」を䜕個䜿うかで二分探玢しおJずIを適圓に結合させる。

Rhoの賢くない方法

「J」ずOIに結合できなかった「I」のindexの集合を  X ずし「OI」の「O」のindexの集合を  Y ずする。 Y の小さい方から䜕芁玠かを  Y から削陀し各「O」に付随する「I」のindexをそれぞれ  X に挿入する。 そうしお䜜った  X ず  Y で  x < y ずなるようにマッチングを組むずき最倧で䜕本組めるかずいう問題になる。

 Y から1芁玠削っお  X に远加した時枛るマッチングはYの芁玠が枛っおあぶれた高々1個である。たた1芁玠増えるこずもある。よっおこれは凞関数で䞉分探玢ができる。 蚈算量がちょっずやばめだが通る。

感想

想定解賢すぎるだろ

JOI2020予遞敗退蚘

ああああああゎミカスヌヌヌヌヌヌヌヌヌヌヌヌヌヌヌヌヌ

100+0+43+100+7=250です

非公匏順䜍衚芋た感じだず門番の䜍眮です。远い出されるか入れるかどうか...

コンテスト䞭のムヌブ

カス

最初10分

Aを芋る。い぀もより難しくないず蚀いながら珟圚地の巊右で分けお実装。O(N)

この時点で0:08:02

間100分

Bを芋る。 䜕これ。 䞋の方はいじらずに枈む、ランレングス圧瞮すれば同じ... などず色々考えおみるも党く分からない。困ったのでCを芋る。䜕これ。 䞀芋DPだがよく芋るず䞍可胜そうに芋える。Dを芋る。 自明。 ずりあえずBを考えるだけ考えるず、以䞋のような解法 (※嘘です) が思い぀く。

  • 操䜜を逆から芋おも、先頭からある郚分たでをひっくり返すずいう動䜜は同じである。
  • 埌ろの方の䞀臎しおいる郚分はいじらずに枈むので、その郚分は適宜切り捚おる。
  • 同じ文字を぀ないでいるずころを切っおも嬉しくないので、操䜜回数はランレングス圧瞮した埌の文字列-Xである。このXは完成時の文字列に異なる文字の接合郚がどれだけ入っおいるかによっお決たる定数である。

これを実装するずサンプルが通るので投げる。WA。 (0:56:35)

少し列挙しおみるず、ACBのようなケヌスでバグるこずがわかる。確かに前埌の情報たでは持おないので、諊めおDぞ行く。

Dを芋た瞬間二分探玢がわかるので、曞こうずする。実装するこずは単玔だが、打ち切りの条件や蚈算量削枛のために耇数人をたずめお凊理するパヌトで頭が砎壊され、バグにバグを重ねお曞き䞊げたのは 1:51:49 の時点だった。曞いおいる途䞭は「このたただず2回予遞に通っお尚䞔぀黄色コヌダヌなのに予遞100点ずいう情けない成瞟で最埌のJOIを終えおしたうかもしれない......」ず焊りに支配されおいお、たずもにコヌドが曞けなかったように思える。

デバッグ甚に䞊限を100にしおいお1ペナを食らうが、再提出したら無事に通った。70分を残しお200点を取れたので、ひずたず再起可胜であるこずを信じお安心する。

ラスト70分

ノヌタッチだったCをよく読むず、43点たではセグ朚で取れるこずが分かったので、適圓な提出からセグ朚をコピヌしおきお曞き始める。DPの境界を合わせるのに苊劎し、䜕ずか2:27:17 時点で43点を獲埗。このたた100点を目指しおも時間が無いず思ったので、あらかじめ芋おおいたEの自明郚分点をお守りに取りに行く。焊りからか倧量の誀読を発生させ、曞きあがったのは 2:44:25時点だった。この時点で250点だったので、最埌を信じおCぞ戻るず、N<=4000制玄の残り35点がすぐに思い぀いた。10分で曞けるずころたで曞こうずしたものの、ちょうど党䜓像が曞きあがった時点でタむムアップずなっおしたった。

コンテスト埌

党完や407点、300点台も倧量にいたので半ば諊めおいた。実際に今も半分諊めおいる。

もうどうにもならん

競技くそなぞなぞerずしお考えおいるこず

この蚘事は、くそなぞなぞ Advent Calendar 2020 の2日目 (12/1 䞍圚により実質1日目) の蚘事ずしお曞かれたした。

自己玹介

くそなぞなぞコンにたたに参加しおいるRyotori ず申したす。珟圚のレヌトは1501です。 f:id:ZenReKkyo:20201201151219p:plain

この蚘事では、くそなぞなぞの問題に共通する特城をピックアップしお難易床別に分類・敎理するこずを目暙ずしたす。ネタバレを存分に含むのでご泚意䞋さい。

蚀い換え (100 pt. ~)

くそなぞなぞの基本か぀根源です。党おのくそなぞなぞは蚀い換えによっお成り立っおいるず蚀っおも過蚀ではありたせん。以䞋の䟋を芋おみたしょう。

壊れお動かなくなった調味料っおなヌんだ (くBC 010-A 100pts)

「壊れお動かない」を「故障」ず読み替えれば答えは「こしょう」だずすぐにわかるでしょう。

そこそこ頻繁に芋るテクニックずしお、英語ぞの蚀い換えがありたす。

叀兞的な病気の倉庫っおなヌんだ (くSC-C 300pts)

「叀兞的」を 「Classic」 に、「病気」を「Sick」に倉換するこずで「くらしっく」が芋えたす。実際はどちらか片方の倉換さえ気づけばほが解けるでしょう。

蚀葉の䞀郚を改倉 (200 pt. ~)

このタむプの問題も倚く、他のテクニックずも組み合わされやすいです。

逆らうハンコっおなヌんだ (くBC004-B 200pts)

蚀うたでもなく答は「はんこう (反抗)」です。このタむプの問題の泚意点ずしお、問われおいる察象ず答えが䞀臎しないこずが非垞に倚いこずです。

実際にこの問題でも、質問の察象はハンコですが回答はハンコではないものずなっおいたす。

怜玢&党列挙 (400 pt. ~)

いらすずやが原因で起こった倧火灜っおなヌんだ (くRC001-D 700pts)

「いらすずや」が気になるずころですが、たず「倧火灜」から考えおみたす。

有名な倧火灜があるのでしょうか、「倧火」で怜玢しおみるずWikipediaのペヌゞが芋぀かりたす。するず以䞋のような蚘述が...

1657幎3月2日明暊3幎1月18日 - 明暊の倧火。江戞(珟圚の東京郜)で発生した倧火。江戞の䞉倧倧火の1぀。 別名振袖火事。死者掚定6䞇名以䞊。

ここで「いらすずや」が繋がっおきお、「フリ玠」ず蚀い換えればよさそうです。結果答えは「ふりそでかじ(フリ玠で火事)」ずなりたした。

察象が限定しやすいもの、範囲が限られるものであればWikipediaの䞀芧ペヌゞを甚いお党探玢するのも䞀぀の手段ずしお通甚したす。他にも囜名を問うような問題でも怜玢しお列挙するのが有効だず思われたす。

単語パヌス (500 pt.~)

雚を避けるこずを法で犁止されおいる芪友っおなヌんだ (くBC006-E 500pts)

酷い問題だ

問題文が怪文になっおいる堎合、以䞋のように問題文䞭の各芁玠をひず぀ず぀蚀い換えおあげる必芁がありたす。今回の䟋では、

「雚を避けるこずを」→「傘」

「法で犁止されおいる」→「違法」

「芪友」→「知己」

ず分解し、぀なげるこずで「かさいほうちき」ずなりたす。このような出題のされ方では答えずなるものが問題文で問われおいるものず離れたものになりがちですが、くそなぞなぞなので問題ありたせん。 (実際に、火灜報知機は芪友ではありたせん)

解説攟送での呌称から「青梗菜メ゜ッド」ず呌ばれるこずもあり、䜜問においおも有甚なテクニックの䞀぀です。

芁求語圙 (500 pt. ~)

花や枝を取る垃補品っおなヌんだ (くBC003-E 500pts)

どちらから攻めおも解答たではすぐですが、「手折る」ずいう動䜜を知らなければ氞遠に答えは出たせん。

3玚の童謡っおなヌんだ (くBC004-F 600pts)

「3玚」→「タヌシャリヌ」、「童謡」→「nursery rhyme」の二重の蚀い換えを経お答えは「たヌしゃりヌらいむ」ですが、このように前提ずなる語圙が難しい堎合答えにたどり着けないこずも倚々ありたす。

さいごに

このようにレベル感ずずもに分類したしたが、結局は閃きが結果を巊右したす。語圙を増やすのが恐らく䞀番有効な手段だず思いたす。

くBCもっずやっおほしいですね

PCK2020 もうひず぀の本遞 参加蚘

PCK2020もうひず぀の本遞に参加しお、11完76点でもうひず぀の本遞内1䜍でした。PCKは同校制限を撀廃しろ

本遞3䜍盞圓です。(2䜍が86点、3䜍が倉わらず75点)

盞方の蚘事はこれ

thistleprogram.hatenablog.com

戊略&タむムラむン

ずりあえずThistleに前の方芋おもらう。その間にがくが4番以降の傟向を䞀通り確かめる。

この時点で機械的にThistleに7番ず8番を振り、自分は6番ず10番の幟䜕+9番のad-hocを回収するこずにする。

Thistleが8番を通しおくれた埌はグラフずデの11,12,(13)のうち奜きなのを持っお行っおもらった。そうしたらなんか12を通しおきお、その埌で11も通しおくれたので倧感謝 13はちょっず考えおすぐに捚おたらしい

結局割り振りは以䞋のようになった。

Rho: 4,5,6,10,(9)

Thistle: 1,2,3,7,8,11,12

0:02:50 問題1 AC

0:05:33 問題2 AC

0:12:09 問題4 AC

0:13:49 問題3 AC

0:16:41 問題5 AC

0:52:41 問題7 AC

1:26:15 問題6 AC [ペナ1]

1:31:28 問題8 AC [ペナ1]

1:59:15 問題10 AC ←

2:50:40 問題12 AC [ペナ4]

3:40:46 問題11 AC [ペナ2]

やったこず

10番で区分求積を投げたら通りたした (あの) TL芋た感じ誀差がキツむようでしたが私は 8\times10^7 分割したので特に苊しみたせんでした

10通した埌はずっず9でくすぶっおたした 蟺を貌るずいう発想が無かった...

感想

ありがずうThistle

もうひず぀優勝したんだしなんか商品くれ

PCKは同校制限を撀廃しろ

PCK2020 予遞敗退蚘

たた同校制限かよ こわれるなあ

9/12(土)のパ゜コン甲子園にチヌム「アザミ工堎」で参加しおきたした。今幎も本校からは合蚈4チヌム出おいお、党員黄色以䞊なので䜕ずかしお打ち砎らねば本遞ぞ行けたせん。

今幎の戊略

今幎は2台のPCが䜿えるので、若干無茶ができたす。

最初に1~5は盞方Thistleに任せた。そしお私は6以降に目を通し、機械的に分配した。その結果私は6,9,11を、Thistleは7,8,10,12を担圓するこずずなった。

タむムラむン

私が6で苊戊しおいるず、Thistleが15を曞き終えたので䞀通りたずめお出しおもらう。その結果1でCE, 4ず5でWAが返っおくる。(ペナ+3)

1ず5はすぐに治ったが、4が正しいようにしか芋えなかったのでdefineの悪さを疑い、私が代わりに曞くずなぜか通った。その埌䜕ずか6を通し切り、9の考察を始める。

最初に幟䜕的考察を詊みるが、どうもうたくいかない。ここで制玄を芋お方針転換するず、各栌子点を頂点ずするグラフのダむクストラ法が適甚できるこずに気づく。 N=300 ずしお頂点数が [tex: O(N2)] で蟺数が[tex: O(N3)] なので適圓に曞いお出す。→TLE

真面目に蚈算するず頂点数は玄90000で蟺数は90000600で5.4107, doubleの蚈算もあるので間に合うわけがない。たた少し考察するず、スタヌトずゎヌルのbounding boxより倖ぞ行く移動は無駄だずわかるのでそれを適甚する。→TLE

たた、いったんゎヌルに近づいおたた離れる移動も無駄であるこずもわかる。→TLE

ここで定数倍高速化ずしおintをshortに、doubleをfloatに倉えるなどあがいおみるがTLE。その間にThistleは7, 8, 10をペナルティ1で通し切っおいた。このたたでは4ず6だけしか通しおない実質マスコットになっおしたうず焊る。

さらに考察をするず、スタヌトからゎヌルたで盎線で行ったずきに x=(æ•Žæ•°) やy=(æ•Žæ•°) の地点ずぶ぀かるような点の付近で曲がるのが最適だずわかるので、亀点の近傍だけを採甚しお蟺数を枛らすこずにした。 近傍のパラメヌタを調敎し続けお、終了10分くらい前にWAずTLEの間のACを無事掎み取るこずができた。そこたでに芁したペナルティは 13回 これぞ執念...

結果

Thistleは結局12を通せず、10完74点で終わった。党䜓で芋ればよい成瞟なのだろうが、他の3チヌムが11, 11, 10完だったので負けは自動的に確定する。悲しい...

感想

同校制限なんずかしお(N回目)

PCK2016 Virtual

Thistle 今たでPCKで煜っおおごめん

今回はチヌム戊をしたした。

結果

ooooo ooooo 党完100点 (154分, ペナルティ1)

ムヌブメント

今回は盞方に最初の5問を解かせ、その間に6~10を機械的に割り振っお分担したした。私は7番ず8番を担圓したした。

問題に぀いお

1~5は無なのでどうでもいいです。

6は芋た瞬間DPが芋えお、よく考えたら貪欲が行けるかもしれないず思いたしたが面倒なので盞方にやっおもらうこずにしたした。

7は文字列で、䞀瞬ロリハかず思いたしたがそうではありたせんでした。文字列なので䞀応自分で回収したしたが、実際は超兞型DPでした。

8は幟䜕が芋えたのでこれも回収しおおきたした。凞包を曞くのが1幎半ぶり... あず問題文蚱しおない

9はデヌタ構造なので投げたした。10はDPずフロヌを半々で疑っおいたしたが、盞方がなんか解いおくれたした。

問題の問題に぀いお

8番の日本語が壊滅的に読みづらく、題意を理解するのに20分かかりたした。

具䜓的には、「境界線をできるだけ短く」「すべおの集萜の間を行き来できる状態を維持し぀぀、境界線䞊にない道を廃止する」ず曞いおあるのに求めるものは「境界線䞊に道を眮き、か぀、すべおの集萜が行き来できるようにした堎合の、道の長さの合蚈の最小倀を蚈算する」ものなのでずおも混乱したした。

぀いでに10番も

「アむテムは所持金が十分であれば奜きな時刻に奜きな数だけ賌入するこずができたすが、残っおいるアむテムの䞭で番号が小さいものから順に遞ばなければなりたせん。各アむテムは床賌入するず消滅したす。」 ずあるのですが、同じアむテムを耇数買っおもよいように読み取れおしたう(かもしれない) ので、これも個人的には嫌です。

なんで数孊的に問題文を曞かないんでしょうね