/ 最近 .rdf 追記 設定 本棚

log[2023-05-14]



20230514() [AtCoder] 今日は ARC160配点 400-500-500-(あとは知ら) はゼロ完あるで参加賞は茶パフォかなAReverse and Count数列を前から見ていくその値が a であるとするa より小さい要素が右側に sub 個あるとしてK<sub であるなら右側にある小さい方から K 番目の要素と a を範囲とする操作が答えさもなければa を含む a より左側の数列の並びをそのまま温存するような操作がいくつあるかを考えるa の左に l右に r 個の要素があるとすると(l+1+r=N)evn = l+1+r*(r+1)/2 回の操作が a までの数列を固定するこれが K-sub を超えるなら次の要素に処理をまわす。今は a の位置に a より大きい要素を持ってくる操作を考えるa より右にあって a より大きい要素のうち K-sub-evn 番目の要素と a を範囲とする操作が答え説明しててもわからん難しいね。提出 #41421021 (AC)1時間半ちかくかけて 2WA のち ACCPower Upこれは精進最初は素朴に A の要素を小さい方から処理するのだと思った個数を数えて何回の操作が可能か数えるそして次の要素の個数を操作回数分だけ加算するそれではだめなのだなたとえば現在の要素が a であるとして最初 n 個あったとする最大限の操作を駆使して n+c 個まで増やすことができるとするn+c 個を操作対象にするとき a 以下の要素から成る集合の多様性が最低になる一方もともとあった n 個の範囲内で操作をしたりしなかったりする場合はa 未満の要素を対象にした操作にはなんの制限もかからず集合の多様性が最大になるというのをどうやって管理して数えるの提出 #41424512 (AC)A 問題の AC から1時間後でコンテト終了からは 30 分後の ACかかった時間を考えると A 問題の配点は低かったと思うB 問題は苦手な苦手な ABC-D の臭いがしたしARC の問題ならさらに難しいに決まってるので一瞥だけして飛ばした正しい判断だったと思う@2023-05-17 精進BTriple Pair(ぎりぎり水 diff)動画を見た後でいまさらだけどxyz を仮定して並べ替え(6通り3通り3通り1通り)を考えるところまではすぐに考えた2数の積が N 以下なんだから入力の平方根の範囲で全探索できることもわかるでもコンテト終了後にちっと考えたときは z に関してループを回していたそれは難しくない?提出 #41484353 (AC / 180 byte / 350 ms)動画で見た通りに y についてループを回した普通に ABC-Dったと思うただし苦手な苦手な ABC-D ではある


20230513() [AtCoder] 精進今日あったパナソニックグループプログラミングコンテ2023AtCoder Beginner Contest 301-EPac-Takahashi( diff)最初はメモ化再帰だと思った順列総当たりが許されない制約(N16)だけどA<BA>B を区別せずに2回目以降の数え上げがサボれるなら許される制約だったからでも実装を始めるとパラメータが多くてうまくメモできなかったそのうちに TSP とかワーシャルフロド法が見えてきた■最初の提出 #41382752 (WA×19)無効値が -1T+1 の2種類あって-1 がうまく扱えていなかった■2番目の提出 #41386679 (WA×5)ックマンの餌が1個もない場合に答えが nil になってしまっていた■3番目の提出 #41392115 (AC / 3117 ms)無効値を T+1 に統一したり多重ループの一番深い部分を効率化するなど清書しているうちに WA×5 の原因がひらめいて制約を確かめたら間違いなさそうだった終了から5分3秒後の AC一番悔しいやつコンテト成績証上がるんだ……喜べないかなABCD のふりかえりAOverall WinnerArray#tally で集計して出現数を比較する同数なら最後の文字を見れば答えられるArray#tally を使うとき出現数が 0 のときに nil が返るのが予想外で実行時エラーを起こしがちBFill the Gaps隣接2項を見てあいだを補完するGateway Timeout のせいで最初の提出は虚空に消えたその後も E 問題で提出が消えたり消えたと思わせてちゃんと WA になっていたりしただから再提出前には提出一覧を確認したんだよペナルを重ねないためにCAtCoder Cardsこれも Array#tally で集計した'atcoder' の各文字に対してはオールマイ(@)が使えるがそれ以外の文字は出現数が正確に一致していなければいけない数の一致とオールマイの数が足りているかを確かめたDBitmaskすべての ?0ったとして可能な最小値を求めて N と比較するあとは最上位の ? から順番に 1 に変えてみてN を超えない限りはさっきの最小値に加えていくこういう数の扱いは BIT#lb メソドの実装でなじみがある>#38427641典型力について書かれchokudaiのブログにも言及があるよ(この一連の操作のコ(書き換えた要素の数によらず2^k であるkを使った場合のコトはk-1以下のすべてを使ったコトより高い)自分「わかるのではな「知っているだけなのだ最小値を求めるときに String#to_i を無引数で呼び出してしまって1ペナ


20230512() 「英語と日本語の間に空白を入れる/入れないの話を見かけますが趣味や好みや習慣の話は別にして業界的に「和欧間にアキはあるべきだがそれは空白文字であるべきではないFAですようする「空白文字でテキトの見た目をどうにかしようとするななんだよなまあとはいえです。たとえLaTeX文書における段落内の改行はどうなんだという話にもなるわけなので絶対の何かがあるわけではないです。和欧間のアキも個人の文書では好きなように書くのでいいと思いますが少なくと「空白文字を挿入すべきとは言えないというのが大意です■コンチョクのはなしいくらか前から現在まで自分は日本語と英語の境界にスペースを入れる派閥に属しているついでに言うと数字と単位のあいだにも入れるようにしている(日本人がやりがちな間違いとして英語圏の人が指摘しているのを読んでから欧文ルール? 単位が匁とか町のときの正解は知らない算数ルールでは単純な数字ではなくて式のとき式と単位のどちらかに括弧を付けると習った気がする)その方が間違いなく(プレインテキトであっても)見た目が整うからなんだけどそれを指して空白文字で見た目を作っているつもりはないのだなスペースの部分までが英文ルール(単語の分かち書き)というつもりたまたま隣の文字がひらがなやカタカナや漢字だったからって英単語の前後にスペースを入れない(入れてはいけない)理由にはならないと思うん和文の文字組みの都合でしかないとも思うに同意するってこと関連して RFC 3492 に広末を探しに行ったら予想外にブリグリを見つけて嬉しくなってしまったどれでしょう(N) だよ■関連するようなしないような和製メアプレイヤーがやらなくてたとえば Songbird がやっている処理the brilliant green という名前やタトルがあったとしてこれを T の並びに加えるのが和製でB として並べるのが Songbird午前/午後/AM/PM の使い分け(0時12時前置後置)とあわせて注目したい微妙な差違総じてよそ者の扱いが雑なのではないかな■ツリーをたどっていたら最初の一連のツイトの人意味に立ち返ると "de" の機能として空白が必要な箇所だと思うので編集者として仕事をするときにはわりと自明「空白文字を入れるになりそうというケースもあることを書いていてっと業界ルールが謎です。特に固有名詞に関して意味を優先するのはまったくわかりません


20230511() 私は異なる人々にこの話をしてきましたがプログラマは一様にこの話を聞くと 歓喜するのに対して経営者は目に見えて不機嫌になりましたっぽう純粋な数学者はなにが面白いのか理解できないようでした■難しい反応をどう解釈していいのかよくわからないプログラマは歓喜するらしいけど高級言語しか使えないようなダメなプログラマは操車場のように低レベルな現場で巻き起こる騒動には考えが及ばず当たり前のように2種類の車両が交互に向きを揃えて整列してると考えてそうそれは私です。経営者が不機嫌になる理由がたぶん自分と同じ期待を当初から持っていたからだと思う(調査してみると経営者の決定がきちんと操車場に伝わっていなかった)それなのに最終的な解決方法が現実的ではあっても理想に届いていなかった(ささいな問題として……)数学者の興味をひくには数学者の言であるとされあなたの話は具体的でわかりにくいっとわかりやすく抽象的に説明してくれませんか?がヒトになりそう話が具体的すぎた最後にペアを考えることで解けた競プロの問題を嬉しそうに挙げておきますよ。灘校文化祭コンテ2022 Day1-DDouble Permutations(20220504)


20230508() [AtCoder] 精進。ARC102-DAll Your Paths are Different Lengths( diff)やることはまあまあすぐにわかる数値の2進表現をグラフに直す。LN の制約がそのような配分になっているトごとに頂点を割り当てて隣接ビトへ1の辺(重み2べき)と0の辺(重み0)を張るそれだけだと L がフルビトでないときに困るけど1のビトに対応してそのビトが最初に倒されるビトである場合を表す辺を張る提出 #41255174 (WA×7)こういうジッジスクリトを使っていた>judge.rb27入力される L の上限は 20トあるそのときに N=21 となる答えを返していたのが WA の原因N20 以下に制限されているL のビト数+始点1+終点1くらいの頂点を使わせてくれてもいいと思うけどL のビト数と同じだけしか許されていない提出 #41257168 (AC)すごく苦しんだしその過程では3進数でやろうかとも考えたけど結局始点と始点に隣接する頂点を機械的にマージすることで答えが合ったいらん苦労だったと思う制約が無駄に厳しかったあるいは上手い考え方があったの提出 #41260968 (AC)3進数でやったたぶん最大ケースが L=531440(10)=222222222222(3)解答が N=13;M=57 になるM が上限の 60 に近いがセーフあんまりややこしいので初めて秘密兵器()を使ったトを見れば明らかだけど2進数であるか3進数であるかにかかわらず自分が考えるとどうしても桁数+G(終点)の頂点を使ってしまうMSBS(始点)として使用してもだだから2進数でやったときに L のビト数+1を使ってしまって制約を1だけ超えてしまった■3進数で真の最大ケースは L=885734(10)=1122222222222(3)ったかもこのとき解答は N=14;M=60 になる上限いっぱいでぎりぎりセーフ辺の制約(M)がキリよくおおざっぱなのに対して頂点の制約(N)がタト過ぎて無駄に解答の様式(=ただの形記述の癖以上のものではない)を縛ってると思うんだよな


20230505() [AtCoder][Ruby] 普段のコンテト参加スタイルAtCoder でジッジに使われる Ruby が今のところ Ruby-2.7 なので C:\Program Files\Ruby27 にイールしてコマドプロントで ABC300.rb27 とか ruby27 ABC300.rb27 で実行できるようにしている■方法は? ruby.exe の名前を ruby27.exe に変えるのはあまりうまくなさそうだしruby27.exe という名前のシンボリックリンクを他所に作っても x64-msvcrt-ruby270.dll みたいなライブラリにパスが通ってないと実行できないしで~\Documents\PATH という名前のフォルダをパスの通ったフォルダとして用意してruby27.bat という名前のバッチファイルを置くようにしている中身は次の2行だ@set PATH=C:\Program Files\Ruby27\bin;%PATH% @ruby %* 他にも ruby18.batruby19.batruby25.batruby31.batirb27.batruby27-prof.bat とかのファイルがあるRuby-1.9 のあと AtCoder に触れるまで Ruby から離れていたことがわかりますね原始的だけど面倒がない■デスップに空の ABCxxx.rb27ァイルを作成してサクラエタで開いてコマドプロントも開いて準備完了ブラウザとエタとプロントを行ったり来たりしてるあとアニメとかの動画をデスップいっぱいに最大化して再生してる静かすぎるのも集中できないものらしいですよトインデトだとか補完だとか整形だとか構文エラーの指摘だとか機械に不随意に横から茶々を入れられるのが耐えられないのでエタには多くを求めていないBIT とプライオリーとセグメト木と組み合わせの事前計算をイチから書くことはもうないのでそのときはエタの GREP 機能(Ctrl+G)で過去ファイルを漁っているプライオリーとセグメト木にはバグったものが混じっているのがわかっていてっかりしていると過去のバグを再現してしまう■コドテト勢(実在をやや疑っている)よりはよく準備してると思う言語リファレスはここ☞できることは全部リファレスに書いてある専ら Array#insert の第一引数と第二引数のどっちがどっちだったかとト演算子の優先順位を確認するのに使っている他に競プロで使うようなものはだいたい覚えてるかなRuby だけだからねC++ で書こうとすると cpprefjp が手放せない■こういうお役立ち記事があるのは知っているRubyプログラマがAtCoderの環境をatcoder-clionline-judge-toolsで快適にしてみた - Qiita使われているのはどれも有名どころのコマドでAtCoder に限らず使う機会が多くあると思う参考にしてまったく損はないだからそうでない原始人スタイルもあることを書いた


20230502() [AtCoder] 精進ARC100-DEqual Cut( diff)最大値とか最小値とか見えるので二分探索で解きたい気持ちになる何をボーダーにして判定する最初に考えたのは4つの部分列 B,C,D,E の和 P,Q,R,S が最低いくつ以上でなければならないそうすれば部分列の和は途中までは基準を少し超えたところで揃うこれの何が良くないたとえば前の方の部分列が基準を多少大きく超えた方が全体としては凸凹が均されるかもしれないそれは A 数列の配列による他には部分列の和の差(つまり答え)が超えてはいけないラインを決め打って探索ができるか考えたりでもまとまらなかった提出 #41124597 (AC / 339 Byte / 812 ms)まず数列を2つに割ったこれは総当たりで次にそれぞれをできるだけ均等に割ったこれは二分探索で仮に2つに割った前半/後半が2等分できるときにあえて差をつけた方が答えが良くなるケースがあるかをよく検討したなかった


20230429() [AtCoder] 今日はユニークビジョンプログラミングコンテ2023(ABC300)があった。自分のすべての提出コンテト成績証ABCDE の5完水パフC 問題からふりかえりCCrossってんの大きさを計って集計する問題文がちっと難しかった✖印の判定条件の3つ目X 字の先端4点の延長にある4点のうち少なくとも1つは . であるという内容だった理由はわかるさもなければそれはより大きいばってんとして数えられるべきだからだでも本文中「バツ印を構成するマス以外に # は書かれていません「異なるバツ印を構成するマス同士は頂点を共有しませんという条件が書かれているそうすると結局判定条件として「少なくとも1つは .だけど実際に入力されるもの「4つとも . になっているということだ別にそれで問題はないないんだけど全体として過不足なく丁度になっていないことで考え漏らしがあるかと疑念が生じて考えてしまったあと「頂点ってなんだ?と具体例を読めばグリドの十字部分らしいとはわかるけど推測ですよ解答は X 字の右上がりでも右下がりでもいいので端点を見つけて長さを計るちなみに最初に考えた解法は UnionFind を使うもので問題文を読むときも UnionFind が使えるかどうかを確かめながら読んでいたでも判定が簡単そうだったので UnionFind は書かないで済ませたDAABCC来たよ苦手な苦手な D 問題数学(素数)diff(予想)数字と友達になれないと TLE になるやつ解けなかった ABC296-DM<=abの反省から N の平方根の範囲で何かする制約だとはすぐに読み取った(この前はそれすらできなかった)あとはやや長めの3秒制限を信じて打ち切りながら全列挙した自分の提出は Ruby の中でも一番遅い部類苦手なんだよEDice Product 3確率の問題。Ruby による他の提出を見ると一番早い提出がたぶんメモ化再帰で自分のと全然違っていた自分の解法まずN が2と3と5の積に分解できなければいけないので因数を数える4と6の目はひとまず無視して2と3を数える1の目は最初からないものとして5面ダイスで問題を解くその場足踏みはサイコロを振らなかったのと同じことなのでN が2と3と5に分解できたら6の目と4の目の数を決め打つ総当たりでダイスの目の並べ方を組み合わせで求めて確率を出す。解答の C 関数の定義がやや不自然だった引数を nrs から rs だけにして nrs.sum で求めることにすると無駄がなかったFMore Holidays解けなかったのでこれは精進方針は1つの x で区切られた長さ 0 以上の o の連続をK 回連結することを考えるK はべらぼうに大きな数になりうるけど仮に入力 S に含まれる x の個数が X 個だとしたら K/XK%X を使ってうまく数える罠がいくつかあるどの o の連続から数え始めるかを全探索するのだけど後ろの方から数え始めて K 回連結したときにうっかり T の長さ NM を超えてしまわないことまだある入力の先頭と末尾が o の文字で操作回数 Kx の個数の倍数で繰り返し回数 M が十分に大きいとき末尾と先頭にある o の連続を一体で扱わなければいけない


20230425() クリアしたゲームに出てき「古の民というワドについてこれが自称として使われるんだけどそういうことってあるのかなと考えてしまったつまり古い民というのはトロニムなのであって古い民しかいないときに古い民を自称したりはしないだろうと思った新参古参という言葉への色の付き方を考えれば自ら古さを誇ることが全くないこともないかもしれないけど可能性としては古い民が自らを指し示す固有の文字があるとして(その時点で古い民と同じくらい古い民が昔はいたっぽい)その文字に古い民という意味を割り当てた古い民と対置される読み手が存在するのかなと古い民というのは読み手の語彙なのであってームドキュメトは読み手の目を通してプレイヤーに提示されているのかなと考えたのでしたその読み手っていうのは実はゲーム開発者なんでしょとも意地悪く思ってはいる■先住民族とか極東と交流があれば外からの見かたを取り込むこともあるのかな「我ら先住民族と名乗る人がいるかは知らないけど自らを地図の右端(far east)に位置づける日本企業は知っている


20230421() 登記所備付地図データ公開の時に知ったんだけどデジタル庁のス・ス・レジトリが自分のほしいものだなと実際のデータを見るとわりと何番何号の座標が得られるんだけど新しい区画のデータがなかったり○○市△△がすっぽり抜け落ちていたりかゆいところに手が届かない感じ一次データを持っているところが素早く網羅的に使えるデータを公開するとマピオンなどの使い勝手が上がることで恩恵があると思うってるよータ解説PDF2,279KBを読む「地番のマスターデータは未整備で備・公開のあり方について検討中で2022年度の整備予定は以下とおりです。() 地番マスターデータの整備を実施します。ただし一般への公開可否は未定でと書いてあるっぽり抜けているのは地番形式の住所っぽい地番っていうのは何丁目何番何号という形になっていない古い形式の住所( PDF に書いてある)登記所備付地図データをみると地番というドがあって抜けていた地名もあるから補完できるみたいデジタル庁登記所備付地図デ(地図XML形式変換コンバータの公開についてというページをあらためて読む「法務省がG空間情報センターを介して提供したデータを活用し地番データや筆の形状データを取得・反映していく予定で「地図XMLのデータから筆のポリゴンデータおよびス・ス・レジトリの整備に必要な属性のみ抽出・出力します。基準点筆界点筆界線は出力しませんと露骨に書いてあったね備付地図データの方では(何丁目)何番何号もハイフンで繋いで地番扱いみたいだか「地番といっても同じものではないみたい■フーマトされた地番データと新区画のデータを待ってるよ


20230420() 新聞の将棋欄「俗ながら妙手という表現を見た妙手なのに俗だとなんとなく下に見るような雰囲気が感じられるのはどういう手なのか気になりましたよくわからない価値観指しやすい手がそのままうまい手くらいの意味かなと思っているあえて但し書きを付ける心理はやっぱりわからない


20230419() 『スーパーユーザーなら知っておくべき Linux シスムの仕組みを読み始めた良いか悪いかは別として「スーパーユーザーならという煽りからは予想できないほどに当たり前すぎる(と感じる)基本のキから丁寧に書かれているもう少し薄くても良かったかな1冊で間に合うと考えれば利点ではある■印刷について思わず他の本と見比べてしまったのだけど意識しないでも気が付いてしまうほど明らかに質が低い解像度が低く文字の輪郭がなめらかではない黒色ではない(解像度の低さと同じことかもしれないけど)影を付けたように滲んでいる家庭用プリンタで印刷したのかなという品質眼鏡を外すまでは気が付かなかったのではあるけども


20230418() [AtCoder] 精進2。ABC146-FSugoroku( diff)Sugoroku という名前の問題は調べて予想の倍あって驚いたんだけど、まであって前回の ABC でもちっと変化球で Unfair Sugoroku という名前の問題があったいずれも確率と期待値の問題だから初代が最短(辞書順)最小の手順を答える問題だったのが意外■1手につき1から M マスまで進める最短であることが第一だからまずは M マス進めるときは M マス進んでしまう無理なら M-1 マスM-2 マス……っぱい進みすぎてしまうことで誤って到達不可と判断してしまうおそれはないそれはつまり M マス連続してゲームオーバーマスがあるということでありどう手順を刻んでも結果は変わらない次に同じ手数のなかでは辞書順最小の手順を答えにしなければいけないこのために最短手順を求めるときはゴールから貪欲に最大歩幅で移動を繰り返し最小手順を求めるためにはスタトから逆向きの移動を繰り返した結局最初の1手を最小限に小さく刻んだ後は最大歩幅での移動を繰り返すことになるのだね提出 #40753539 (AC / 203 Byte / 113 ms)すんなり AC できたわけではない最初は DP のつもりで各マスに最小手数と最小手数の中での最小出目の2つを記録していった答えは合うけど TLE次は各手数において到達可能な範囲を表す2つの数を記録していったM が大きい場合に DP 配列を1マスずつ埋める手間が節約できたけどこれも2ケースは TLE が避けられなかった最終的に各手数において可能な移動先の先端だけを記録するようにした■精進1。ABC141-EWho Says a Pun?( diff)これまでも何回か読んだことがある問題だけど実装には至っていなかった提出 #40750806 (AC / 218 Byte / 1688 ms)N 個の各添え字について長さ1のプリックスが共通するもの長さ2のプリックスが……と順番にグループを細分化していったその過程で同じグループの中で最小の添字と最大の添字の差がプリックスの長さより大きいことを確かめるRuby によるすべての提出を見ると最速は 87 ms なので 1688 ms は2桁遅い見ると添字と長さを0から開始して見つかれば長さを伸ばす見つからなければ添字を増やして再検索するという手順を繰り返すみたいっくり見ても混乱するややこしさ