達也さん(@tatuyan_edson)、迷路さん(@pazzle1230)を中心に私含め5名の少数人数ながら、楽しい時間を過ごすことが出来ました。今回はその合宿初日に行われたVirtualContest(https://vjudge.net/contest/178834)の解説を行います。Numberとは数字の各桁が4か7のみの数字のことです。Numberであるか判定しなさい。愚直に10で割った剰余が4か7か判定し、元の数を10で割る、ということを繰り返します。そんな気も起らなかったので、入力を文字列として受け取ることで1桁ずつ丁寧に見ています。Numberを求めよ。各桁に使えるのは4と7のみなので、使えるだけ7を使うと桁数を小さく出来ます。Numberは出来るだけ4を先に出力したものとなります。Numberだけ離れている文字列で、辞書順最小の長さnのものを求めよ。基本はなるべくaを使いたいです。すると、aの間隔は4です。a〇〇〇a〇〇〇a...のようになるのですが、これはabcdabcda...とするのが最適、というのはすぐ浮かぶのではないでしょうか。木の各枝に重みが与えられている。Numberの重みを持つ枝が存在する(i,j,k)の組(i,j,kはそれぞれ異なる)の個数を求めよ。木DPで考える→どう頑張っても1回のDFSじゃ根しか求まらない→あ、これ†全方位木DP†だ...→過去に解いたこと無いのでパスという流れでスルーを決め込みました。全方位木DPですが、1回DFSを行って根の答えを求めます。Numberを持つ枝を通る頂点の数」を記録していれば求まります。これを解くと、根をiとする答えが得られます。Numberの重みでない枝で繋がっている頂点のみがj,kの対象から外れ、それ以外はすべて対象になります。Numberで繋がっていないなら、これは親の通り数と同じです。後はそれらを足すだけです。Probability問題概要[pl,pr]の中から1つランダムに数を選び、それをaとします。[vl,vr]の中から1つランダムに数を選び、それをbとします。Numberの個数が丁度k個になる確率を求めよ。区間ごとに区切って尺取り法やれば解けます。いう発想が一瞬で浮かぶのですが、実装に苦労しました。Numberって109までに1024回程度しか出てこないと気づきました。適当に配列に保持しておくと、k個先が簡単に求まるので楽でした。後は上手く区間を区切るのと、左右逆にして成り立つ場合があることに気を付けることぐらいです。予選(A,...2完+部分点10点でした。予選(問題A,B)タイトル通り2完でした。日)ネットの海に生息するらしいバーチャルグソクムシ。競プロとCTFをメインに、たまにEsolangを混ぜます。(7)月別アーカイブリンクGitHubはてなブログをはじめよう!Hyogaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。