/ 最近 .rdf 追記 設定 本棚

log[2023-05-20]



20230520() [AtCoder] 今日はトヨタ自動車プログラミングコンテ2023#2(AtCoder Beginner Contest 302) があった。コンテト成績証自分のすべての提出所要時間が A=1分B=31(+5)C=3分D=8分E=12(+5)G=33B 問題で沼ったのとケアスミス2つが反省点以下ふりかえりAAttack繰り上げ整数除算A が1以上の制約であることを確認してから (A-1)/B+1 と書いたけどったら (A+B-1)/B と素直に書けばいいと思う負数の整数除算は 0 に近づく言語と負の無限大に近づく言語があってRuby の場合はたとえば (-1)/2-1 になるわざわざ括弧を付けたのはたとえば 0-1/20 になるからで負号がリテラルの一部(もしくは単項マイナス)であることを明確にするためめんどくさBFind snukeいまもって分からないこの条件A1,A2,A3,A4,A5​ の中心はこの順に一直線上に等間隔で並んでいる中心ってどこ? さておき単にグリドを全探索する問題なのだけどどこではまったの次の文字を探索するときに方向を固定するのを忘れていてジグザグに探索してしまっていたそれで答えがいくつも出てきて困っていたさらには WA も出してしまってそこから6分で別バージョンの解答を書き上げて AC を得たつまり6分で解けたはずだよねってことコンテト終了直後に WA 提出を眺めていてバグを見つけたので出し直して AC にしておいた8方向の遷移先のうち1つがずれていたのが原因'snuke' の各文字に対応したクロージャをチェインして出力に繋げる実装ってちっとおもしろくないですか? Array#inject メソドがはまりすぎ(なので WA のままにしておけなかった)CAlmost Equal制約がごく小さいので愚直に並べ替えて愚直に比較して答えを出したDImpartial GiftDDPD……ではない! 差が一定以下で和が最大になるものだから条件を満たす A の要素のうち最大のものと条件を満たす B の要素のうち最大のものを見つけていい方を答えにすれば良い条件とは現在見ている要素を a としてa-D から a の範囲の値が他方の数列に見つかることEIsolationUnionFind だと辺の削除はできないんだよね注目するところは辺の数はクエリの数を超えないということ集合(Hash)で個々の辺を管理して許されるあとは辺の数が0と1のあいだで変化するのを掴まえて孤立頂点の数を管理する(変数名の oorphano だよ次数0の o でもあるかな)サンプルの2が優しくて(2 番目の種類のクエリを行う直前の時点ですでにその頂点と他の頂点を結ぶ辺が 1 本も存在しないこともあります)ペナルを食う前にすぐ修正して提出したよねいやそれでもペナルは食らったんだった>WA一度は書いた E[a].clear がいつの間にか消えていたのが原因GSort from 1 to 4っと難しい類題を解いたことがある>ARC124-DYet Another Sorting Problem(20211125)あるいは UTPC2021-AMake UTPC(20220511)今日の問題では1から4の場所に納まるべき1から4の値の列が与えられるトすればどの範囲が1の場所でどの範囲が2の場所か……ということがわかる位置と値が一致しているなら交換は不要1回のスワップでお互いの位置が正しくなるペアがあるならスワップして損はない次は位置を交換している3つ組を見つけて2回のスワップで位置を正す。ここまで実装してあとはどうしようかと作業配列をイスペトしながらサンプルを実行していたらサンプルの2が神だった残りは4つ組だけしかありえないので不一致の数を合計して÷4×3で OKFMerge Set名前からするとマージテクとかマージソトでうまくする問題かなと思うけどうまい道筋をまだ見つけられていない(ツイトを読んで書くんだけ) BFS も考えたけど隣接頂点リトが膨大になりそうで諦めたっとしてあなた(私で) M 個の値を頂点にしようとしていませんでしたか?B 問題今理解した5 つのマスの組 (A1,A2,A3,A4,A5)という自己紹介がちゃんとあったAお前マスだったのG 問題@kyopro_friends なるほど書き方的に一般に成り立つように見えたので例えば数が 6 種類あると上手く行きませんというのを伝えたかったでーんわかりませんねえ位置を正す方法(経路)に複数の選択肢があって貪欲法では良くない経路を残してしまうのかなと思ったけどそういうケースが作れないのとそういうときにどういう方法がとれるの


20230516() [AtCoder] 精進。AGC047-AInteger Product( diff)以前に解こうとして解けなかった問題小数部分を9桁に固定した固定小数点数として扱って2の因数と5の因数を数えて 1018 個以上作れる組み合わせを数えるというところまでは以前も考えたったい何がわからなかったのたぶん A 数列の組み合わせを考えようとして O(N^2) をどうにかする方法がわからなかったのだろうでも考えてほしい2 の因数も 5 の因数も 18 個までしか数える必要がないA 数列の各要素は 18×18 の平面にプロトできるそうすると組み合わせは 19^413 万通りしかない提出 #41467175 (AC / 511 ms)同じ要素を組み合わせないようにだけ注意そこはひっかからなかったけど入力を固定小数点数化するところでバグらせて0の数がときどき1多かったりしたこういう添字と数の変換って指を使ってよくよく数えるんだけど間違えるんだなあ


20230515() 長らくのご利用ありがとうございました : トアサイン■なんの関係もないけど読んでたブログ最近更新が滞り気味だと思っていたら……過去の記事全部消しちったの? それは何かを否定するような行為に見えて賛同はできないかな当人の意思とすればよく理解はできるけども所詮は赤の他人の言うことだけど読者だったから惜しいと思う


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のデータから筆のポリゴンデータおよびス・ス・レジトリの整備に必要な属性のみ抽出・出力します。基準点筆界点筆界線は出力しませんと露骨に書いてあったね備付地図データの方では(何丁目)何番何号もハイフンで繋いで地番扱いみたいだか「地番といっても同じものではないみたい■フーマトされた地番データと新区画のデータを待ってるよ