/ 最近 .rdf 追記 設定 本棚

log[2024-03-02]



20240302() [AtCoder] 今日は ABC343 があったでは ABCDE のふりかえりをAWrong Answer言われた通りにやるだから答えを 0..9 の範囲で探したけど2つの数字を選んだら必ずそのうちの1つ以上が答えになることには気がつかなかったBAdjacency MatrixB 問題からグラフかとびびったけどグラフ問題を解くために隣接行列形式のグラフ表現に慣れておきましょうねという問題だったC343N10**18 以下の制約列挙はできないなと思ったけど平方数なら列挙できるかないやできないなと思ってもう一度問題を読んだら立方数だった立方数なら列挙できる脊髄反射をやめて問題を読もう読んで頭に入れようDDiversity of Scoresッシュ表で数えます。E7x7x7制約の元になる数字は7と小さいけどこれが何乗にもなるので制約の厳しさが見積もりにくい結果的にはがちがちに厳しくはないけどゆるゆるでもないという制約だった模様自分の AC 提出はちっとだけ工夫した脳死愚直解で 1892 msったけど同じ Ruby81 ms の提出があるAC が早い順に 81 ms319 ms1555 ms1892 ms となっているおかしくない? 時間をかけたほど出来が悪いっておかしくない? 自分の工夫は総当たりする範囲を限ったこと1つめの立方体は C(0,0,0) で決まり2つめの立方体の1つめの軸は 0..7 の範囲で網羅できる2つめの軸は1つめの軸以下の範囲に限って良い3つめの軸は同様に2つめの軸以下に限る3つめの立方体の置き方をどうする最適な置き方がわかるなら全探索などしていないV3 がゼロか正かで場合分けをしてゼロなら1つめの立方体と重なったり重ならなかったりする範囲を列挙したが2つめと重ならない範囲とアドを取っても良かったV3 が正の場合は1つめと2つめの立方体の両方と重なる範囲を列挙したあとは空間に13とマーキングしていってそれらの個数が V1V2V3 と一致しているかを確かめたAtCoder Problems によるとこの E 問題が青 diff の一方より配点が高い F 問題が水 diffったらしい報われないなあFSecond Largest QueryAC がまだなので不確かだけどセグメト木で2番目に大きい数が求められるのではない目当ての数がわかったら範囲内にある個数を BIT もしくはセグメト木で数えられるなら数えたいけど数の種類数×範囲の幅≦20万の2乗になるので工夫が必要内部データを Hash で持つ BIT でクリアできるならお手軽だけどある程度運任せになるうえ定数倍も重いSortedSet があればそれが最適だけどないA,B-木でも良さそう? だけど以前の実装をこの問題に適合させるのが難しかったもう内部構造を覚えていない効率良く insert できるソト列を2本用意したらdelete 操作は実装しないで済ませられるF 問題他の人の提出を覗いてみたセグメト木だけで個数も数えられるっぽいそうか全部の数を数える必要はないのだップ2の値と数だけ覚えておけばいいのだセグメト木の使いこなし術が足りていないF 問題サンプル以外 TLE になった。提出 #50851673 (TLE)完敗です。完全に何かがおかしいE 問題立方体の共通部分を計算で求めると速いらしかった3次元の重なりをイメージするのは難しいけどってみたら区間の共通部分を3回求めるだけだった。提出 #50880639 (AC / 948 Byte / 417 ms)IX 関数で直方体の共通部分を求めてV 関数で直方体の体積を求めるどちらもワンライナーで書ける程度の簡単な式あとはテーに6重ループで列挙して簡単な3者の包除だけどこれでもまだ 417 ms かかっている。81 ms は異次元じゃない? Yes になり得る入出力を全ケース埋め込んだと思しきこちらの提出 #50846546108 ms……はジッジ起動後の第一ケースの特異例だとして次点が 57 ms なんだけどほとんど遜色がないよF 問題ップ2の合成をするのに Hash を使った集計をやめてネトした if 式で3分岐×3分岐=9分岐の結果をベタ書きしたら間に合った。提出 #50881793 (AC / 1063 Byte / 1670 ms)そんなにかわるんだ他の人の TLE/AC 提出の差分を見ているとセグメト木の初期化を 2N でやるか NlogN でやるかでも結果が分かれるみたいシビアだ


20240225() [AtCoder] 昨日は HUAWEI Programming Contest 2024AtCoder Beginner Contest 342があった結果は知らないABCD のふりかえりと EF の精進を書くよAYay!人間はひと目で見つけて数えて答えが出せるけどコンピータにやらせるのが同じ程度に簡単なわけではないRuby には便利メソドがあるので Array#tally だとか Hash#invert を使って見た目だけは簡潔にできるけどもさもなければ手間を惜しまず堅実にステップを刻むのがいいと思うBWhich is ahead?人から位置への逆引きインデックスを作っておくA 問題より簡単では?CMany Replacement昨日の不調はここから始まっていた前から順番に置換表を更新していってもサンプルが合わないそれは連鎖的な変換が考慮されていないから連鎖的再帰的ということで UnionFind で解けるだろうとは思ったけどどうにも無駄に牛刀を持ち出しているように思える結局置換表を逆順に更新していくことで答えが出せたけど12 分かかってるんだよなあ他所で読むまで気付いてなかったんだけど想定解は置換表(サイズ26)を毎回スキャンして置換する 26×Q520万ステップの愚直解法だったんだろうそうかフルスキャンをしても 26 DSquare Pairいかにも D 問題らしくシンプルに効率を求められる問題苦手な部類平方数を列挙しようと思ったけど上限が A.max**2 になるのでためらってしまったA.max20そのループの中で A の各要素について対になって平方数を作るものの存在を確かめるとなるとA.max×N20万×20万 になる次は素数を列挙しようと思ったA の素因数になり得る素数は2万個以下A を素因数分解して奇数個の素因数の積として分類し直すと掛けて平方数を作る組み合わせは同じグループからの組み合わせに限られるこのように答えの出し方はわかっているが果たして2万×N で間に合うだろう比較的遅いことはわかってるけどとりあえず Integer#prime_division を使った解答を提出してみてそれで間に合っていた約1秒他の人の提出を見ていたら require 'faster_prime' しているものを見つけたなにそれ知らないELast Trainこれは精進パラメータが多くて頭が壊れてしまった解法はすんなり出てくるールの N に到着する最も遅い電車を始点にしてプライオリーでダイクトラ法をするしかしパラメータが多いのと最短ではなく最遅を求めるというので普段と勝手が違って無限にバグを生み出し続けて時間切れになってしまったーに入れるのは時刻と街のペアたくさんあるパラメータはキーに入れる次の時刻を計算するために使うあとはがんばって頭の中を整理すれば答えは合うだけど昨日は列車の運行を逆向きにたどっていることが合わさって出発時刻と到着時刻の前後関係がどうあるべきなのかとか判断をするその時刻に k 項ある等差数列の先頭末尾どちらの数字を使うのかとかおよそすべてのポイトで間違えたFBlack Jackこれも精進昨日も今日も WA を出したがやっと AC が出たまずーラーの値 yLy の範囲でどういう確率で分布しているかを知るために 0 から N まで DP をするE 問題もそうだったけどこの問題も考えることが多くてこんがらかるy<L の範囲ではサイコロを振るけどLy の範囲では振らないDP で求めようとしているある場所にいる確率というのは同時にサイコロを振って次の場所にいる確率を求めるために使う値にもなるのだけどL を境界として両者が異なる値を取るということそこをきっちり区別しなければいけないところでサイコロは D 面ありDP のためには D 個の値の合計が知りたくなるが愚直に合計するには D の数が大きすぎることがあるこういうことを1つのループの中で全部考えながら整理するのは非常につらい今回も evall のとき(20240128)と同じように class を使った別解(#50640033)を書いた解答の後半は前半とは逆に N から 0 に戻る逆順の DP をしたN にいるときがスタサイコロを振れば必ず負けサイコロを振らないときは y=N の場合を除いて勝つy=N の場合の確率は前半の DP ですでに求めている後半の DP でもサイコロを振った場合の勝率を求めるために D 個の値の合計が必要になるので前半と同じ class を使って楽ができるそのクラス(LastNSum)を読み直していたら@first が完全に無意味なことに気がついてしまったpop 操作があるなら意味があっただろうけどないのでいらない自分のすべての提出ト遷移は知らないどれだけ減ったかなんて知りたくない


20240217() [AtCoder] 今日はトヨタ自動車プログラミングコンテ2024#2ABC341があったC 問題難しすぎでは ABDEF のふりかえりをAPrint 341問題文が意図的に不親切だけど曖昧ではないので指示された通りに出力するBForeign Exchange0 から N-1 まで順番に処理する DPCTakahashi Gets Lost500 の3乗を計算してみて不穏な気配はあった制限時間が長めの3秒だけど足りないしかし Ruby で通すのが不可能というわけではないらしく1秒2秒3秒程度で通している3つの提出があるったらしかたないね想定解が愚直シミュレーションだとしてもそれがだめなときに選ぶプランBを持っていないのが悪いF を通したあとに 15 分残っていたら慣れない C++ で書き直したけどもCrystal を使わないのはね処理系がイールできないからなんだよねWindows Vista にどうやったらイールできるんだろうRust もできなかったDOnly one of two二分探索最初なぜか二分探索を2段階に分けて実行しようとしていたんだけど2段階目を書いているときにそれがそのまま1ステップで答えを出せることに気がついた無駄に時間を使ったねEAlternating String反転する区間の内部では操作1の前後で状態は変わらないBIT などで境界部分の状態を記録するとある範囲の境界状態の累積が対数時間で取得できる添字でバグらせてペナル 10FBreakdown残り 10 分ぐらいで一応の解答が完成したんだけど答えが合わない条件の2つx に隣接するいくつかの頂点からな(空でも良い集合 S であってySWy<Wx​ であるものを選びS に含まれる頂点それぞれに 1 個ずつコマを置くのシグマを見落としていてWy<Wx なるすべての yS にコマを配置できるものだと思っていた残り 10 分でこの思い違いは厳しいが幸いにもある頂点を選ぶ選ばないの愚直2乗 DP が許されていたので間に合ったうれしい何番目まででいくつ選んだときの最大がいくつという DP が求められていたら無理だった解法はW が小さい頂点から順番に答えを計上するそれは配置されているコマ数×倍率倍率を決めるために W が小さい頂点から順番に DP をしているしある頂点の倍率を決めるためにも W 未満の範囲でまた DP をしている自分のすべての提出C 問題が解けていないことを除けば上出来。コンテト成績証1400 に復帰しました1500 にもう一度のせて青を窺いたいところC 問題。提出 #50395575 (C++ / AC / 637 Byte / 93 ms)提出 #50396690 (Ruby / AC / 259 Byte / 66 ms)Ruby が速すぎる! コンテト中にこれが通せないのはお前が抜けてるからだってはっきりわかんだねC 問題Ruby で最初の AC であるこちらの提出 #50356929 を見ると18 行目の uniq! がポイトかなと思った自分の TLE 提出である #50356164 が3行目でやってる文字列置換も目的は同じだけどやり方が拙くて不十分自分は経路の冗長性を取り除こうとしているが経路をたどった結果の到着点の重複を取り除くことで冗長性を除くべきだっただけどそのときは方法が思いつかなかったんだよ理由もわかる重複を取り除くためにはいったん配列などに溜めて並べて比較する必要があるだけど自分の解答の構成はループを回して逐次的に移動先を更新していた同時には1つの到着点しか存在していないのだからそれらを比較して重複を取り除くという発想が自然には出てこない全体を俯瞰して最適な構成を考えることができなかったのは問題の理解が浅かったからにほかならない残念だね


20240215() Windows 11ージョン 24H2POPCNT命令を備えたCPUが必須? 化石レベルでは起動せず - やじうまの杜 - 窓の杜■今使ってるのは Phenom X3 だから 2010 年より前だけど SSE4a には対応してるみたいなので大丈夫だな化石じゃないってお墨付きをもらっちった


20240210() [AtCoder] 今日は鹿島建設プログラミングコンテ2024AtCoder Beginner Contest 340があったでは ABCDE のふりかえりと G の精進をAArithmetic Progressionやるだけなんだけどstep メソドでうまくやりたかったねープを回してしまったBAppend配列が扱えますかという問題CDivide and DivideC 問題らしからぬ制約にびびるけども対数時間で底にたどりつく1ステップ当たり2分岐あるのが不安だけどメモ化再帰でダメなら泣いちゃうRuby で最短の提出 #50173926 はループなしの計算で解いている式の中にビト長が2回出てきているのが目を引くが意味はわかりませんDSuper Takahashi Bros.最初はステージ1から N-1 まで順番に処理する DP だと思ったしかしワープ土管は先へ進むだけでなく前に戻るパターンもあるD 問題でひっぱり出したくはなかったけど頭を使いたくもなかったのでプライオリーを貼り付けたEMancala 2最初は前々回の D 問題 Island Tour のように変化量をため込んでおいて最後に累積和を答えにするのかと思ったそうではない操作のたびに箱にあるボールを数えて空っぽにしなければいけないでは愚直に操作しようBIT で効率良く処理しよう自分にはめずらしくコメトが書いてある>#50168931そうしないとややこしくて間違えると思った1ループ当たり BIT の操作が最大8回あり入力と出力のそれぞれで N 回の操作があるNM の最大が 20 万のときに(2N+8M)logN のステップは Ruby では非常に不安わかりやすさのために処理を刻んだけどTLE になったらいくつかの BIT 操作をまとめるせこくて間違いやすい節約術が求められていた幸いにも出してみたら 572 ms で余裕のセーフGLeaf Colorまず頂点数1の誘導部分グラフは必ず OK頂点数2のパスグラフも同色の2頂点を組み合わせて問題なく作れる3頂点から様子が異なる2頂点を結ぶパスに3頂点目が含まれている場合この誘導部分グラフは2頂点の組み合わせとしてもう数えてしまっている余りの数で答えなさいという出題形式から予想できることだけど頂点同士の個別の組み合わせ個別のパスをひとつひとつ考慮して数を数えることは許されないどういう特徴量によれば計算で数が数えられるのある部分木について色ごとに端点の選び方の通り数を記録したあとは DPある頂点を根とする部分木について子と子の組み合わせを数え根と子の組み合わせを数える。提出 #50189012 (AC / 591 Byte / 1023 ms)DP はコドが長くなりがちだけど9割方は定型の処理であってこの問題に固有の部分は 20 行目と 25 行目ぐらいのものその式が見えるまでは何度も何度も合わないサンプルに苦しむんだけどっと見えても最初は TLE (#50187841)ったりしたージテクが使えるように数える数を工夫して別口で行っていた集計もすでにある数を流用するようにしたら ACったこういう解ける G 問題を得点にしたいなあ正直木の問題はボーナス問題だと思っている自分のレト帯を基準にしてだけどっているべきことは全て知っているし解けない問題はないと思っているこういう強気の姿勢大事気持ちが負けていると解けない理由を探してしまって解けるものも解けなくなるそしてあえて水をさすことを書くと気持ちだけでは解けない問題は解けないのもまた事実FS = 1はさっぱりです。これが水 diff ってまじなのです青じゃないということは目の付けどころ次第であっさり解けるタイプの問題なのかなっさりとさっぱりは似ているけど通じていないよね私はさっぱりの方でした三角形の面積の公式を検索して |XB-AY| = 2 の式までは出ていたしかし探索ができる制約ではなくそこから何も手が出なかった高校数学の演習課題でよくあったパターン手段は授業で教わっているのでトをもらえば最後まで書けるだけど最初のとっかかりが何もなくて途方に暮れるそれはつまり知識はあれども理解するには至っていないということなんだろうそういうようなこと『技術の創造と設計(畑村 洋太) などに書いてある


20240203() [AtCoder] 今日は日本レジトリサービJPRSプログラミングコンテ2024AtCoder Beginner Contest 339があったD 問題で無駄に定数倍に苦しんだりF 問題で多倍長整数によるチトが可能だったりとRuby で参加している自分と C++ で参加している人とでは見えている問題が違っているコンテトだった惜しむらくは F 問題の愚直解法を完成させることさえ時間内には間に合わなくて損するばかりで得をし損ねたこと結果は ABCED の5完ではふりかえりATLDトジェイピーを切り出す。split してもいいし拡張子を取り出してもいいライブラリにあるでしょうBLangton's Takahashiシミュレトする添字をループし忘れて1ペナCPerfect Bus累積和の最小値をゼロに合わせたときの累積和の末尾の値DSynchronized Players二人の位置をキーにして BFS……なんだけどTLE を2回出したょうもなょうもないのはコピペによる定数倍の改善そんなことしたくないESmooth Subsequence1点更新のセグメト木やりたい操作を考えてそれができるデータ構造を知っていればやるだFProduct Equality値が十進1001桁になりうる以外は普通の2乗の DP案外 Ruby だとそのままいけるんじゃね?と思って愚直解を書き始めたんだけど時間内には完成しなかった1の要素を特別扱いすると答えが合い提出したら TLE にもならなかったD で無駄に苦しんだ分F でずるして得したかったけど取り返せなかった残念


20240131() 今年に入ってから遅れてエルデンリングをプレイしている実況動画を見ているときには気付かなかったけどいびつなゲームだなと思うそして少なくないクソ要素「おもんねと罵ったいびつというのはト瓶やスタミナといったシスムがデモンズソウルをはじめとするステージクリア型のアクションゲームのためにデザインされているところ(実際はデモンズとブラボは草と血なんだけどそのために敵ドロップアイムが草と血まみれになったり攻略のために回復アイムマラソンが必要になったりするのでダクソのエト瓶は発明だったと思ってるそのエト瓶が今作ではという話)これはマップ探索には向かない序盤が特に顕著だけど回復回数が5回程度に制限されていて回復量も短い HPージのさらに半分程度だったりする敵を1体倒すのに3回4回と斬りつける必要があってその間に1回2回と反撃を食らい回復のためにグビグビグビグビとエト瓶をがぶ飲みすれば残りの回復回数は1回だこれでは探索が続けられない祝福に戻ってリセトすれば回復回数とともに敵も復活している早々にマップ探索は霊馬を使って敵のあいだを駆け抜けてアイムだけかっさらっていくのが最適だと学習してしまった特に聖杯の雫と黄金の種子を広範囲に集めてエト瓶の回復量と使用回数を高めるのが重要対策がなされていないわけではなくて敵の目がないときはダッシュをしてもスタミナが消費されないし(そのせいで武器を素振りしてスタミナ消費を確かめることができなくて)敵を倒していればいつの間にかエト瓶の使用回数が回復しているという仕様もある(敵の集団を撃破することで回復するとチトリアルにあった)祝福がこれでもかと大量に配置してあったりもするだけど付け焼き刃のパッチだしある目的のためにデザインされたシスムを無効化するシスムでありいびつだねと感じるクソ要素がいくつもある敵集団に蹂躙されて何もできないまま殺されて面白いことある? 仕返しに敵を数や圧倒的攻撃力で蹂躙したとして面白いことある? 少なくとも後者で鬱憤はたまらないだろうけどどちらも望んだものではない注意しても即死する崖下りや落下ポイトも望んだものではないひとつふたつならいいだろうああ不注意だったなと反省を促されるものだったらいいだろうだけどどれだけ注意しても即死する飛び降りアクションを望んではいないャリオミケラの聖樹自分が気持ち良くなることしか考えていないェアネスがない神託の使者たちの遺灰を拾ったけど使わない絶対に許さないっていればトライが容易は美点だけど最初から雑な駆け抜けを強要されたくない行為として同じだからってはき違えないで欲しいそもそも自分はトライであっても敵を殲滅して進んでいる後顧の憂いを残しては前進できない性分だから安全地帯から一方的に遠距離攻撃を浴びせられるこちらの弓の射程と同等の索敵範囲を持っているのでスナイプできません後ろに回り込むための迂回路へは落下死に注意しながら飛び降りなければいけないただしそこも射程範囲内だからゆっくり狙いを定めていると被弾するという状況が許せない駆け抜けを強要するな次のエリアにいた大量の王族の幽鬼もクソだった駆け引きがないんよねクソ攻撃力とクソ体力とクソ強靱でブンブンブンっちは 100% 相手の都合に合わせて壁を延々殴るが如し一回だけならお付き合いもしようモブだから復活するんよねそれが何体もいる駆け抜けを強要するなあとの不満はドマップに断崖絶壁が多すぎる単純に落下死する危険がそれだけ多いということだし(実際よく死ぬ)ここは通さないここは通してやろうという神の恣意があまりにもあからさまでその強制手段としての断崖が興ざめでもあるただ通さない通さないばかりでなく迂回路や転送門や人形の転送魔法など複数の経路で各地が繋がっていたのはとても良かった今はローデイルの地下と雪原を探索してるけどまだマルギトとームル城を放置している自由にマップを埋める楽しみがあるのは良いところで配置できるマップアイコンが 100 個までに制限されてるんだけど攻略済み撃破済み未撃破の強敵がいるとアイコンを置いていっていたらこの前 100 個を使い切ってしまった少ないよ最後に右スック自分の PS5 はまだまだ新しい方だと思ってるけど(ってから半年ちっと)カメラがいつもいつでも地面に向かっていく右スックをしばけばその時だけは解消するけどすぐにカメラが下を向く他のゲームではこんなことないのでっかりデドゾーンをもうけてほしい右スックで思い出したけど右スック押し込みによるロックオンもクソ要素のひとつなんで目の前の襲いかかってくる敵を無視して攻撃が届きもしないはるか遠方の敵をロックしてんの? しかもそれが無害な獣だったりック操作による切り替え対象から外せという話ではなくて押し込みによる最初のロックオン対象の選定基準が馬鹿だということトローラーがプレイヤーとシンクロしていないームシスムに殺されて面白いことなんかねーよまだあった死に方が無様だよねうるさい何度も何度もあれを聞かされるのが苦痛だから一番うっとうしくない音声(若年女性1)っとうしいけど一番ましだという理由で選んだ■以前にダークソウル3の武器遍歴を書いたので今回も初期武器であるハルバドをレベル100を超えた今も使っている今作は目立って強い武器弱い武器というのはなくてもちろんカテゴリごとに特性が重さに比例して傾向があるとしてもカテゴリ内では差をつけず横方向に色んな武器があるというのを目指してるっぽい初期武器が今まで通用しているし重めの初期防具が余裕で装備できるように持久力を伸ばしたら特別重い防具を除いてどんな防具も余裕で装備できる数字のインフレがない戦技はローレッタの斬撃を付けているダイナミックで優美な技と名前だと思って気に入っているサブの打撃武器としてグレトスターズを2本鍛えている大きいところと出血が付いているところがいい初期装備にパができる中盾を持っていたのでチトリアルで試してみてそれ以来パは封印してガドカウンターに頼っていたけどーリアの返報を付けて以来パが楽しいぶんぶんパが通用してしまうし早めに置いておきさえすれば持続が長くてよく成立する武器はこの2種類だ他は持ちたいと思っても知力が足りなかったり信仰が足りなかったり神秘が足りなかったりするそれぞれ 12107 しかないステータスを振ってまで持ちたい理由もない何かある? 鍛えるのに大量のルーンと鍛石が必要になるしーンを費やしても鍛石に制約されて一線級までは鍛えられないし十分に鍛えたところで強武器ということもない武器を持ち換えるよっぽどの理由ある? 魔術は使わない祈祷は毒の回復だ遺灰はたたみかける狼3頭固定砲台のラ無差別弓兵2体囮ゾンビ4体滞空のーネあたりを使い分けているドマップで FP の限り無制限に遺灰が呼び出せたらマップ探索に時間をかけてもいいと思えたかもしれないね目が合ったほぼ全ての人ほぼ全ての獣が襲いかかってくる殺伐とした世界で共闘してくれる他者の存在は大いに心強かったろうと思うノクローンの星空写し身の雫の祝福から高台を馬で移動しながら眺めていると視差というのか遠景と近景がずれる速度が思いのほか大きい普通の星空のようにすべてが遠景というわけでなくすべてが近景ということもないようでつまり? 地下世界なのだからっきりプラネタリウムのような星空なんだと思っていた■防具は勇者の肩鎧が上半身の露出が多くていい感じランタンをつけると肌の光沢が映える下半身は調香師の腰布が生足が長く見えて良いそしてプレイ動画を見ていて知ったのだけど忌み鬼のマトが他とはちっと違っているアイムの説明文がこうなのだボロボロの毛皮を裸体の上に纏うもの 忌み鬼マルギトの装束すべての防具を外しても胸と股間を覆う布は残るのだけどこのマトを身につけると逆に胸の露出が増えるのだなに裸体の上に纏うものだから横乳探しと下乳探しが捗ります。防御力なんてどうでもいいんですHP さえあれば■武器について筋力が 60 に達したのでひとまずこれを上限としたこれ以上上げてもごく一部の重厚な武器にしか恩恵がないしそれよりは装備したくなるかっこいい武器を装備するためにパラメータを振りたいなとそういう武器っていうのは筋力によりすでに十分な補正を受けていてそれでいて技量知力信仰に振れば振っただけ補正値が増えるこれから伸びる武器なのでレベルアップの目的になり目に見える成果にもなるそういう武器っていうのが夜と炎の剣フランベルジ冒涜の聖剣黄金律の大剣剣接ぎの大剣神狩りの剣ック血のヘリケアステールの薄羽落とし子の星々ホスローの花弁あたりァンシーな例外があるけど短剣と斧と槌とフレイルと鞭と拳と爪を装備したくはならないな神秘武器が入ってるけど神秘まで振る余裕はないかなそれを除くと夜と炎の剣が最後に装備できる武器になりそうでひとまずそこがレベルアップの目標■遺灰について現在のお気に入りは夜巫女姉妹っかり付いてきてくれるところがパっぽくて良いとんがり帽子とネコミミ帽子がずるいずるいというのは見え見えの萌え記号であってあざといんだけどその魅力にあらがえるはずがない必勝のデザインがずるいという意味です。かわいい声が漏れ聞こえるのも良い不意に押し殺した声が聞こえてくるんっと被弾させていじめたくなる声といえば一番良いのはハイータさん2番目くらいにヒロイン力が高いすごく……あられもない感じがして心を奪われまドウを食べてえずいていた人だよ@2024-03-03っとマレニアを倒した何日も詰まっていて他のゲームをやりたくもなったんだけど今やめると次にやるときはもっと難しいのに決まっているので日に数回だけ挑戦することを続けていた産まれ直しで体力を 45 から 60 に増やして左手にツヴァイヘンダ右手に神狩りの剣を持って二段階目にいけたのが今日で2回目体力を吸われるから一気に優勢に持ち込まないと倒しきれないどれだけエト瓶を持っていても敵を回復するのに使っているようでは勝てないそういうミスが許されない操作は極めて苦手おおざっぱなんだよ防具は重さに対して物理カト率が優れている貴腐騎士装備一式で体力を増やすよりダメージを減らしたいところで二刀特大剣の L1 攻撃は出が遅くて痛み分けになりがちステップで間を取られて片方が空振ってダメージが半減することも多いったら神狩りの剣を両手持ちしてもそんなに実ダメージは変わらないのではないかと思ったそうしたらなんとも戦いやすい相手の攻撃の出端を一方的につぶせるーリング回避後にどんどん差し込んで怯ませて攻撃を中断させられる怯んだ相手に R1 攻撃がつながる攻撃が続くので体勢崩しからの致命チスが何度も生まれるといいことずくめ両手持ちにしたら2回目で倒せた体力を吸われる仕様から遺灰が機能しないこともあって一対一で集中して向き合える大満足のボスだった■サカサカサカッと切先でほじくってくる攻撃憎らしいよね音と光でしっかり予告してくるんだけどなんなら予兆の前から間合いと直前の行動から来るなと7割くらい予想して待ち構えてるんだけど予兆を見てから攻撃を置いておいても無傷で突進を遮れるわけではない(二刀特大剣の L1 攻撃です)ーリングでの回避も離れるように転がると3番目の判定に引っかかるすれ違うように回避しないといけないだけどそれが難しいのはHP を吸収されたくないから攻撃することよりも攻撃を食らわないことを優先したいから距離をとって大きな隙に確実にダメージを与える戦法を選んでいるからなのであってそれを咎めてくるこの攻撃の餌食にされるのはまあ憎らしいよねだけど予想ができて予告があって対処法も少なくとも3通りはあって(先制攻撃前ロリ)あとは自分がうまく行動できるかだけなので食らっても清々しいということは言える■前の方「まだマルギトとームル城を放置していると書いたけど今日ームル城に向かった「忌み鬼マルギの祝福がすでに現れていて戦闘ができなかった「忌み鬼マルギトローがすでに取得済みなのは知っていて日付とスクリーンシ「破片の君主ーゴと完全に同一なのだったどういうことなの? ドロップアイ「お守り袋どちらか最初に倒した方からもらうことになっていたりする二人は同一人物なの? それを言うとアルター高原だかローデイルだかでまるでモブのような大きさで現れて戦闘になったマルギト系のリスポーンしない敵がなんだったのかという疑問も湧くどういう設定があるの忌み子忌み角忌み潰しについてのテキトは読んでいるマルギトとモーゴトの位置づけと役割に確信がない


20240130() PS5トローの通知を切ってしまったPS4 で手間であり不満であったなぜそトローが得られたのかを知るためにトローを獲得した記念すべき瞬間にゲームを中断しトロー画面に遷移するというそしてゲームによってはムービーを見逃してしまったりするという台無しなゲーム体験がPS5 では一応改善されているらしいボタンを押すトロー通知に追加情報が出るみたいな? すぐに設定で切ってしまったのでよく知らないけどPS4 でも PS5 でも通知は切るといいよあとでこんトローをもらってたんだというのをテーに眺めるくらいでいい切ればそれがどれだけゲームの邪魔をしていたかがわかるし再度邪魔をさせる選択も出て来ないPS5 のましな点がもうひとつ電源を入れたときに最後にプレイしていたゲームを覚えていてフーカスを合わせているところ画面が出ていなくても✖ボタンを押しておけば直前のゲームが始まっているPS3 でこれができていたかできていなかったかはもうよく覚えてないけどPS4 ではできなかったPS4 はゲーム機であることを忘れたコマーシャル端末だったPS5 もアップデト次第であっていつまでこうかは知らんけどトローから意義を奪うひとつの要因があの恣意的なパーセト表示なんの指標でもない無視すべき数字が添えられていることトローから目をそらす理由になるないほうがまし@2024-10-13PS5 もアップデト次第であっていつまでこうかは知らんけどと書いて危惧していた通りのことが起こったログインしていないと何の役にも立たない Welcome という項目が起動して最初のフーカスを得るようになっているームの続きがしたいのにームから気を逸らせるあれやこれやのゴミを突っ込んでくる愚かさ


20240128() [AtCoder] 昨日は ABC338 があった当たり前に解ける問題を当たり前に解いてレトが上がっても微妙な気持ちそれって現在のレトが下振れているだけだからFG も解けない問題ではなかったF はどうやって典型に落とし込むかだと思った@chokudai さんが以前に書いていたように負辺を前処理で取り除けると思うそれができるための負閉路がないという制約必ず終わりがあるだけど前処理がすっきり見通せないから大変でもすることがわかりやすい G 問題に時間内は主に取り組んでいたG を通してからふりかえりを含めて書き足す予定(以降更新されないフラグ)E 問題ではこの問題を思い出していたARC076-EConnected?(20211112)昨日の水 diff に対してこちらは黄 diff だけど同水準の知識で解ける@2024-01-30 フラグを折っていくABCDE のふりかえりと G の精進をACapitalized?Ruby には String#capitalize メソドがあるので……だけど問題の定義と Ruby のメソドの仕様の整合を確かめる手間でっと曖昧さが少ない低レベルのメソドを使うことも現実的な選択肢ではある低レベルとは言えないけどよく知った正規表現で書いた文字コドを見るなら特定の1ビトで判別できるBFrequencyフリークワン集計してから最初の文字を見つけたっかり1ステップで書こうとすると苦しむかもmax_by がぴたりとはまるらしく(#49693254)苦しまずに解決する方法がちゃんとあったようだけどEnumerable#max_by の暗黙の仕様に頼っていたりして(該当する要素が複数存在する場合どの要素を返すかは不定ですというのが明文化された仕様)自分は思いつかなかったなそれは言い訳で添字をペアにして比較のキーにすれば仕様に則って確実に1ステップで答えが出せたCLeftover Recipes一瞬詰まったDP かと思わせて総当たりができる一方の個数を決め打つ総当たりゼロ除算は避けるDIsland Tour環状に繋がった島があるツアーで島から島へ移動するルトは右回り左回りの2通りが考えられるけどどちらが右回りでどちらが左回りかはどうでもよくて橋が1つ封鎖されていると必ず一方に固定される封鎖する橋を決めたときの影響を単位時間で求めるために影響の変化量を記録してその累積和を観測する一発で通ったけど添字でバグらせなかったのはただの運慎重に書いて祈って提出したEChordsスタックです。頂点を順番に見ていって出て行く弦ってくる弦を管理して交差を判定する変数名で困ったarc は弧だから弦は何だろうとそれが問題名の chord なんだろうっと自分では string かなと考えたけどあまりに紛らわしいし弦違いっぽくもあるcodecord に比べて余分な文字がくっついてるのがへその緒っぽさを感じさせるけどあれは umbilical cord らしいエヴァで聞いた音っき類似の過去問を紹介したけどその問題を解いたときということに気がついたらあとはなんとかなると書いていた部分がなんとかならなくて2回も WA も出したのはどうかしているあほになってんじゃねーのGevallすることはすぐにわかるそれをするのがすんごく大変なだけで考える範囲は両端が数字であるような範囲まずは + で区切ってみる。+ の左にある数字の数と、+ の右にある数字の数がわかれば主客転倒で + で囲まれた数()の寄与がわかる次に考えるのは範囲が + で囲まれた内部に端を発して外部に出ていく場合範囲の内外で数字がちょん切られるので扱う値が変わってくるだけど範囲の一方の端を決め打ったときの値とその寄与は同様に求められる範囲の両端が + の内側にある場合の寄与はこれは累積和の問題として単独で D 問題あたりにでもなりそうな難易度の問題ここまで触れてこなかったけど、+ で囲まれた内部は単独の数字ではなく * で連結された積の場合があるここまでと同じように * で分割して左右からの累積和(累積積?)で全体への寄与を求めるんだけどこのあたりからワーキングメモリが枯渇してきて全体を把握するのが困難になるスラッシングというのかな何をするにも復帰に時間がかかり間違えて手戻りが発生しっとも先に進めなくなる最終的に自分はクラスを使って問題を分離して個別に対処することになったそうするとあるレベルで考えているときに別のレベルのことを考えずに済むメソドを呼んで別のレベルの処理結果を得るだけにすると大きくなりすぎたスイッチングコトがまるまる節約できる提出 #49805072 (G 問題 / AC / 1554 Byte / 825 ms)サンプルが通りさえすれば他に特に罠はなかったみたいだけど答えの突き合わせに C++ で提出が早かったこちら(#49712435)を使わせてもらった実行結果にしか興味はなかったけどちらりと覗いてみた solve 関数のシンプルさがすごかったよねしかしあまりにも最適化されすぎていて冗長さが足りなくて自分には書けないし理解できないそんな簡単そうに解ける問題じゃなかったよこの構成をあきらめたからクラス化による問題の整理分割に行ったのだコンテト成績証自分のすべての提出ABCDE の5完でぎりぎりの青パフもう書いたけどこれで上がるのは現在のレトが下振れてるだけなんよG 問題X(自賛を)見かけたので探してみたこちらの提出 #49757867 (tanakh さん / Rust)class を使って構造化するならこのレベルまで突き詰めて抽象を取り出して汎化したいよねというお手本あと変数名も適切でかっこいい累積和のことを prefix sum と呼ぶこともあるみたいなので今回のように色々な累積和を扱うときにああいう呼び分けはあまりに適切G 問題お手本にならって再構成してみた。提出 #50091522 (TLE×7)残念 TLE一応数字の列を1桁ずつ分解してオブジトを再帰的に構築するのは避けて*+ で分解した数字の列からループを回してオブジトをひとつだけ作るようにしたんだけど演算(+*)のたびに新しいオブジトを作るのがまだまだ負担だった前回の提出では + の数だけオブジト数が節約できているあと eval も重いだけど evall という問題名だから eval したくなるのはしかたないよね提出 #50102025 (AC / 1127 Byte / 1759 ms)った! ネックは gsubった(gets.gsub(/\d+/){ "Num.from_s('#$&')" })たとえば入力が最長の1メガのとき演算子と数値が半々なら1桁の数字が 500 キロ個あるgsub メソドが入力の 1Num.from_s('1') に置き換えるなら変換後の文字列長は8メガになるそしてそれを eval する遅いNum.from_s メソドを1文字のローカル変数にキッシュすることで文字列の全長を抑えたらだいたい倍くらい速くなって TLE を免れたちなみに Object.const_missing を使うことでさらに縮めるアイデアもあった。1123N1N123 に置き換えるのだだけど汚い方法でありながらタイムの改善が微々たるものだったので不採用にした+ メソドと * メソドをそれぞれ +=*= メソド相当の実装にするアイデアもあったこれもコドを歪める一方で大した改善ではなかったので不採用っかくきれいに再構成しているのだからックはお呼びでない


20240122() [AtCoder] 精進前回の ABC337-GTree InversiondiffF 問題より低いことになっているらしい問題文が読めて理解できてどういう情報を集めればいいかが把握できればすることはおなじみではある把握できないし実装にも時間がかかるんだけど……さてさてある頂点 v を根とする部分木についてv を含むそれぞれの頂点がそれぞれの部分木に含む自身より小さい頂点の数の合計を g(v) とする特に v が全体の根であり部分木にすべての頂点を含んでいるときf(v)g(v) が等しいあとは……解けるな? 頂点 v が0個か1個の親 p と0個以上の子 c を持つなら最初のステップで g(c)次のステップで親子を逆転した木について g(p) を求めたらv-1 を足して f(v) にするg(v) を効率良く求めるためにはDFS の行きと帰りで自分より小さい頂点の数の差分を求めることにしてその記録に BIT を使えば累積和の更新が対数時間で済ませられる提出 #49587091 (AC / 870 Byte / 913 ms)実装するのにとくに罠もなくしかし時間はかかったふりかえりつつ立ち止まって先を考えつつっくり丁寧に書く必要があった手に対して頭の方が遅れをとっているそれでいて手が書く量も 870トと少なくない時間がかかります。


20240120() [AtCoder] 今日はトヨタ自動車プログラミングコンテ2024#1AtCoder Beginner Contest 337があった。自分のすべての提出繰り言は言うまい以下 ABCD のふりかえりと EF の精進をAScoreboardープを回して集計します。そんな原始的な道具は使いたくないので目的に適った便利メソ(transposesum)を呼び出します。BExtended ABCString#squeezeABC との一致を確認するだけかと思ったら空文字列も拡張 A 文字列だって書いてあるゃあ squeeze した文字列が ABC の中に見つかればいいかと思ったら、ABCABBCABCABC の中に見つかるけど AC が見つからないこれは罠だ実に示唆的なCLining Up 2配列の添字と値を使ってリトを作るそしてリトを順番にたどって出力するDCheating Gomoku Narabe今回の実装枠かなこの提出 #49483745 (AC) を見てもらうと29 行目から 68 行目まで使われていない変数が定義されているっきり斜めに揃えるのもありなんだと思っていたら縦横の並びしか考えないんだって! 無駄に実装時間を使わされたぜ判定は尺取りでEBad Juiceパリの問題だってのはわかるどこにヒトがあるのかも知っているこの日(20170620)の日記からリンクしている論理幼女のページだ超難問論理クイ2人の幼女とチェス盤の部屋が本当に難しすぎた - 明日は未来だ!コンテト終了後にじっくり読んで提出したら off-by-one エラ(#49513582)を出してから AC (#49513739)った提出時刻を見ると最初に提出するまで 11 分しかかかっていないコンテト中の時間のプレッシーの中で新しい知識を仕入れるところから始めて AC まで持っていくのは無理なんだよなあFUsual Color Ball Problemsコンテト中は E よりこちらに取り組んでいた時間が厳しそうで難しいデータ構造が必要になるかと思いきや必要なデータを整理して更新していけば順番に答えが出てくるこれも尺取り提出が間に合わなかったのは実装が完了してサンプルを試すときまで違う問題を解いていたことに気がつかなかったから残り数分で軌道修正はできないしかし落ち着いて考えれば修正でなんとかなる範囲だった扱うデータは 箱数球数色ごとの球数あとは C 数列を見ながらがんばってボールを数える何色のボールが何箱確保しているかがわかれば答えるボールの数が決まる箱数×K とその色のボールの総数のうち小さい方箱数が M を超えない範囲で尺取りをしながら C 数列をローテーションしながらある色が新しく箱を確保したり手放したりしたときに球数をまとめて増減する■6完が狙える問題セトで4完は残念が過ぎるああ繰り言


20240114() [AtCoder] 今日は ABC336 があった。コンテト成績証自分のすべての提出ABCD の4完でレトは横ばいEF がどちらも難しかったではふりかえりと F の精進をALong Loongープを回せますかという問題BCTZcount trailing zeroes. zero の複数形は -s-es が並記してあるのでどっちでもいいのかなト・トウ式で文字列化して /0*$/ でマッチさせたープで求めるならN0 より大きく N2 で割った余りが 0 である限り N2 で割り続けて回数を数えるCEven Digits去年の年末にこの問題を解くやり方をどこかで読んだ気がする(記:先週のことだったらしいまさかこの発言の一週間後にフラグ回収すると思ってなかった 自分もその発言を読んでいましたよ)5進数で N を数えて各桁を変換した他の人の提出を見ると変換に String#tr を使ってる人は全然いなくてみなさん十進数として再解釈してから×2をしているようだったそれは……かしこいなあDPyramid本日はこの問題で終了してしまった書き始める前にはピラミドの中心に据える A 数列の値(これが k になる)とその左右にある要素数だけでピラミドの大きさが決まると思っていたけどサンプルの1からすでに答えが合わなかったたとえば中心の隣の要素が中心より2以上小さかったらピラミドとして成立しないなので左右から独立に DP をして()の要素が左方向(右方向)に作れるピラミドの大きさ+1を上限とした(もちろん中心の値も上限のひとつ)EDigit Sum Divisible桁和の種類はかなり少ない桁和が固定できると各桁に配置した数字を桁和の余りで分類できるから並べ替えを考えずに済んで考えるべき状態数が減るだけど各桁の使用状況と現在の桁和の合計とを状態として決め打った桁和を目指す DP が書けなかったそれで間に合うかわからないし持つデータの型と遷移もよくわからない制限時間 10 秒はすごいこれをどう評価するC++ でもそれなりに時間がかかるので定数倍で劣る Ruby ではループ回数に比例して遅れが積み重なって到底間に合わないと見るかそれともスクリト言語に配慮した結果の 10 秒なのFRotation Puzzle半分全列挙だとどこかのツイトだったようなもので読んでしまったBFS をするには 20 回の操作回数は多すぎるなあとはコンテト中に実装してわかっていたそこから半分全列挙が出て来ないそうだとわかれば実装するだけなんだよね。提出 #49322044 (AC / 557 Byte / 2792 ms)配列を Hash のキーにすると答えを間違えるーにするためにつど文字列化するとコドテトで制限時間をわずかに超えるだから文字列を操作することにしてそのまま Hash のキーに使えるようにしたら間に合ったその後ってることは同じだけど2つの改善で 891 ms になった(#49349630)


20240109() [AtCoder] Stern-Brocot 木の名前を最初に目にしたのはこのとき格子点の数え上げの高速化 - memo(リンク切れ)ABC172-DSum of Divisorsに関連してだった>20200628p01.06最近では ABC333-GNearest Fractionに関連して目にしたし耳にしたたまたま今日ページをめくってい『コンピータの数学116ージにも名前と具体的な木の図と操作が載っていたその操作はこのときの驚きとともに覚えているなにこれ! 分数を初めてならった小学生が必ず間違える分数の足し算(通分せずに分母どうし分子どうしを加算する)にこんな意味があるとか! Project EulerProblem 71 Ordered Fractions に関連してだったProject Euler Problem #71 | KeyZero Conversation ここでのキーワドは Farey sequence (en.wikipedia.org)ったけどSee also のセクションに SternBrocot tree (en.wikipedia.org) の名前を見つけたそうと知らず 10 年以上前に出合っていたのだでもまだ木については知らないし使えないよだけど何回も目にするうちに怖くはなくなってきたかなたかだか数年前まではボナッチ数列も謎の怖い存在だったのだボナッチ数? 「競プロ典型 90でも見かけたがこの数列がどうして頻繁にあちこちに登場するのかわからない限りなくありふれたジェネレータなのか 外国人の名前を付けるのが概念を謎のベールで覆ってしまって良くないと思うなそれがただの名前であり他と識別するための符号に過ぎないことさえ明らかではなくなってしまうのだから■精進ABC333-GNearest Fractionっきリンクを張った動画によるとこの問題「あなたは SternBrocot 木を知っていますかという問題だったらしいので最初の1問にちょうど良いかと提出 #49175972 (AC / 577 Byte / 125 ms)実装中に聞こえてきたので TLE を出す前に動画の通りに二分探索で対策してしまったあと分母が1011桁と19桁になる2数の差と差を比較するのに何ビト必要になるかという話題も聞こえてきた30桁の差と差を比較するのに60200トを普通は要するのではないもちろん GCD の分だけ減るがどれだけ減るかはわからない普通でない方法は知らないだから WA を出す前にこちらも必要な対策をしてしまった入力は文字列として受け取って分子分母を分けて扱い出力前の比較では Rational を使った■最も新しい C++ での提出 #49139061 に普通でない方法がひとつ見られる比較結果が 10**18 未満になるような式をまず用意してその値をある素数の mod で求めて(式の途中の値が3数の積(1060桁まで)になるから)2つの素数でそれをすると中国剰余定理で実際の式の値が復元できるみたいな? コメトに全部書いてあるんだけどSince p/q - a/b < c/d - a/b = 1 / bdの左辺が 1/bd より小さくなる部分がわからないいや……わかったそうかと思ってさっき見たときは比較するものを間違えていたもういちど 116ージにある木の図を確認したら隣接する2つの分数は差が 1/bd になっていた「なっていたではなくいついかなる場合でもそうなることを示して理解しろって話ではあるんだけどつまりそうなるような操作をしているはずなんだけどぼんやりなので操作と結果が繋がりません■本読みを再開したら差が 1/bd になることが次の 117ージに書いて示してあった「2つの素数っていうのはかつて AtCoder でよく見られた 10**9+7もうひとつは 10**9+9 が使われていたあれって双子素数だったんだ(知らなかった)どちらも 10**9 をちっとだけ超える数だから掛けると 10**18 を超えるけど 60トは超えないみたい使い勝手のいい数だ