/ 最近 .rdf 追記 設定 本棚

log[2021-05-05]



20210505() うんこの生産効率が高すぎる毎日3回まで!


20210504() 「洗たくマグちゃん効果に裏付けなし 消費者庁が措置命令 シリーズ累計500万個売れた人気商品 - ITmedia NEWS■何日か前に家で見たどうして王道を避けてあえてスピリチュアルでロハスな選択をしてしまうのか不思議に思っていたところ間を空けずに ITmedia で二度目のご対面となった■で消費者庁洗剤を使わずに洗濯しても十分に洗浄できると表示してい「洗たくマグちゃんに措置命令 |ド サイエ■消費者庁が言っているのは実際に洗濯してみるなど効果をうたうのに十分な合理的根拠がないことを問題にしている販売元は一応の資料を提出したらしいがたぶんマグネシウムに関する間接的な試験結果だったりしたのだろうっきりさせたいのは消費者庁は効果がないことを証明したわけではないということ(消費者庁に効果がないこと(って効果があること)の証明を押しつけられるならお得だもちろんそうはいかない)ドのコメトを読むときはそこのところをはき違えたたとえ「使ってみた系の記事に対する揶揄などが印象に基づく根拠のない中傷だということに注意しよう消費者庁に駄目出しされてもしかたのない見事なブーメランコメトだコメト主の家にも洗たくマグちゃんが転がっているから恨み千倍なのではないそういうタイプの人間だよ(書きすぎ)噂にふりまわされたり思い込みで馬鹿なことを言ったりしてないで使ってみた系の記事を見習って自分でも効果のあるなしを確かめてみたらいいそれが迷信から足を洗って科学を始める第一歩ですよまだ遅くないからがんばりましょう■関連。20151214@2021-05-31 より詳細にトのしかたにも言及がある「実質的にはただの水洗い」洗たくマグちゃんは無意味だと言える"科学的な理" 「アルカリで洗う」はウソだった | PRESIDENT Online(プレジデトオンライン 予想された内容だけど結果論で正当化はできないよ


20210429() 【速報】飯塚幸三被「アクセルを踏んでいないのにエンジンが高回転しパニック状態になった : 暇人\(^o^)/速報 - ライドアブログ■これに対す「反省してない「嘘つきという反応が本当に嫌い実際のところは当人しか知らないけどこの人の主観においてアクセルを踏んでいないというのは普通にありうる自分だってゆっくりバックしてるときに踏んでるペダルがアクセルかブレーキか混同することがある(そして一瞬踏んだ後で認識を改めるその前にパニクって暴走して事故を起こしたらどうなるか)主観的事実に基づかない供述をして潔く罪を認める姿勢を示すことこそが嘘であり己の信念に反する行為だとして受け入れがたいというのが自分という人間たとえ弁護士に罪を認めた方が心証が良くなって刑が軽くなる可能性がありますよと助言されたとしても従うかどうかはわからないそのことと起こった事故に関して車ドライバーとして所有者として被害者遺族に対する責任を果たすこと判決を受け入れて罪を償うことは矛盾しないこの人がそうだと言っているわけではない「反省してない「嘘つきという反応はこれが特殊な反応ではないと思うからこそ看過できなかった反省するとは嘘をついて真実を飲み込んですべてを己で引き受けることなの「そうだという反応はありそう「それが大人だという雰囲気を感じなくもない自分とは異なる人間それって場の和を守るためのスケープゴトを求める姿勢と何が違うの? 演出された予定調和なんてくそくらえ被告の主張とは無関係に証拠を固めて罪を問えばいい自分が被告の立場でもそう思ってる


20210428() これが突然の変化なのかこれまでぼんやり生きてきたせいなのか知らないけど左右の目って見え方がかなり違う違うよね? 顔の真ん中に手を立ててたとえば白い物を見ると差が際立つんだけど自分の左目の視界は右に比べて薄暗くそれにかなり青い目を圧迫するような姿勢をとっていて一時的にちかちかしてるだけかとも思ったんだけど5分10分では変わりがない光の当たり方の影響を考えて方角を変えても変わらないそういうもの?


20210427()

最終更: 2021-04-30T21:11+0900

[AtCoder] AtCoder Beginner Contest 199Sponsored by PanasonicD 問題 RGB Coloring 2

10分間3問早解き回だったわけなので4問目(D 問題)は時間中に解けなかった90 分使っても解けなかった辺がないケースで TLE が避けられなかった

 提出 #22101036 (AC / 343 ms)

AC のきっかけはこのツイ

chokudai(高橋 直大)ナス@chokudai

D問題非連結ですって言うだけでDiff400くらい落ちそう

Twitter

chokudai(高橋 直大)ナス@chokudai

非連結ですって言っても落ちない(サンプルにあるし

連結で出題しないと400落ちなさそう

Twitter

連結で出題しないと落ちないがよくわからないけどともかく非連結なら問題を分割できるじゃんと気がつきましたツイトを読んで初めて気がつきました

サンプル4つのうち2つが辺がゼロのケースだったんだけど極端すぎてそれが全体としては非連結なグラフであること個々の頂点としては最も簡単な連結成分を構成しているということがわかりませんでしたそんなことってある?

 AC 前の提出 #22100473 (TLE×2 / 1つは after_contest)

トケースが公開されていないので提出前のテトには一直線の木を使っていた連結成分の数を増やしても辺の数を増やしても探索を助ける制約が増えるだけだと思ったので

しかしまだ TLEどういう木が嫌か考えるとこの提出は次のような入力に弱い

だけど次のように番号の付け方を変えただけで問題が問題でなくなる

たぶん頂点を次数でソトしてから DFS をすれば緩和されたと思う(AC 提出では違う方法(先読み)をとった)

トするにせよ先読みするにせよ2番目の問題に対処するには非連結なグラフを連結成分に分割する必要があったがそれをしないまま DFS の処理量を削減する方法を考えていたというのが失敗に終わったコンテト中の時間の使い方だった

 提出 #22109995 (AC / 238 ms)

DFS の処理順を次数の降順にしたら悪くなりにくいのか343 ms からタイムが大いに改善したこのムラが DFS の沼であり抜け出せない楽しみなんだよなあ>20201101p0220201107p01.05


20210425() [AtCoder] 昨日の ABC19910分間3問早解きの結果吹けば飛ぶようなゎ水色になっていた次はないな#ボケちゃいMAX https://t.co/DpY5sB73Os / Twitter ちなみに座れるような椅子はないーボドは布団の上であるPC 前でスタンバイとはそういう体勢である■ついに後編アルゴリズム・AtCoder のための数学【後編:数学的考察編】 - Qiita 対象読者だと思いたいが次の一文に海より深い断絶を感じる>この問題も規則性を使うことができます。実際A301=1,A302=1A301=1,A302=1 であるためって待って説明がすっぽり抜けてるよ! A301=1,A302=1 なんてどこにも書いてないよ! それを導くところがこの問題の難しさだと思うよ! 「数列の任意の項が直前の 2 項によって決まっているので連続する 2 項が既出の値をとるとき(たとえば初項である 11)数列は循環している「ある項の取り得る値が 100 種類に限定されているので連続する2項が取り得る値も 100^2 通りに制限され数列は必ず循環するとはっきり宣言してもらってはじめてこちら「へそうなんかそんなん考えたこともなかったな漸化式で定義された数列が循環するってそういうことかと反応できるんですよ実際今初めて考えたからね■同じようなことが以前にも>kを使った場合のコトはk-1以下のすべてを使ったコトより高い これって要は 100000 > 11111 (2進) と同じことなんだけど自分のような人間「この一連の操作のコ(書き換えた要素の数によらず2^k であるという問題文を読んだだけではたどり着けなくて上のように事実として示されて2進数で考えてみて初めて了解できることだったりする■べつに噛んで含めるような解説が読みたいというわけでもないABC の一文解説とか好きなんである>20210224p0120200520p0120200428p01これだけ書いてあれば十分でしもう他に書くことないよと突き放される感じ実際それで通じる人には通じるだろうしならばこちらもそれが理解できる人間でありたいと意地になるよね程度を低く見積もってもらっては自尊心が傷つくのです。一寸の虫でもお馬鹿ちゃんでも


20210424() 『あなたの iPhone はハッキングされましたみたいなメッセージが表示されたこのアプリをイールしたらいいの? 診断っていうボタン押したらいいの?とか言って明け方に起こされたっ込みどころだらけで取り合うのもあほらしい手口ではない■そのメッセージは“何が”表示している? インターネトを閲覧していて表示されたものでしょう? そのメッセージ「お前はもう死んでいるったらどう? わーたいへんだー死んでしまったOS が表示してるメッセージなら話がちっと違うけど「ハッキングなんてチャラい用語をユーザーに提示する OS なら即座に今後の使用を考え直すレベルなのでそれは考えない■英語ばっかりで説明されているそのアプリの画面で唯一の日本語であるレビーを読んでみ? 明らかに日本人が書いたものでないカタトのサクラ本気でだますつもりなら日本語を勉強してからおととい出直して来やがれって言うべき場面なんだよなんでおろおろしてんの?■もうすこし頭を使う奴ならメッセージに信憑性を持たせるため「あなたの iPhone をハッキングしましたその証拠に私はあなたのメールスを知っています。それは○○ですね!!!くらいのメッセージを出すんだよもちろんそれは User-Agent による自動補完なんだけど■俺以外の現代人「広告をスキップ「広告を閉じるといった操作に慣らされすぎていてマヒしてるかもしれんけどこういうアホなメッセージを無視するためにメッセージとともに表示されてい「閉じるボタンをクリックしてはいけないのだよiPhoneったら Safari か? ブラウザを操作して消すべきだ広告が釣りに引っかかるユーザーを誘導しているッシングサト同様に汚らわしい広告にも普段から一切触れないのがいいと俺は思う>20170403■眠い


20210422()

最終更: 2021-06-11T11:27+0900

[Ruby] 多重代入の評価順

以前書いた最初に右辺を評価してそれから左辺の評価と代入を左から順番に実行していく感じかな? 右辺の一時記憶が必要? 多重代入は遅くて時々評価順が難しいというのが現在の評価クイズです。a の結果を確認してから予想してカンマを付けたら予想通りの結果になったので驚きはないけどっぱり普通の代入とは違うんだなあ

そしてこの PR が多重代入について>Evaluate multiple assignment left hand side before right hand side by jeremyevans · Pull Request #4390 · ruby/rubyージされている

3.1.0 から変わりそう? 評価順が変わってパフーマスがさらにちっと遅くなる? 新しい評価順っていうのが

  1. 左辺の変数レシーバ(メソド引数も?)を左から
  2. 右辺の値を左から
  3. 左辺の変数代入代入メソドを左から

従来は2が最初にあって1と3がインターリーブされていた……ということが PR の概要欄と NEWS の修正に書いてある

パフーマス劣化の理由は左辺の評価結果を一時的に蓄える必要があるからか?

いやあっさり変えるし変えられるもんなんだなあまあたぶんRubyーザーの 1 % も変化に気がつかないだろうとは思う

 新展開@2021-05-06

  1. https://bugs.ruby-lang.org/issues/4443#change-91847
  2. https://bugs.ruby-lang.org/issues/15928#note-10

非効率だしバグらせやすいし作り込む価値がないと言っている?

自分はもうこの仕様について(穴にはまった実体験から)っているので常に穴を意識して書くし逆に評価順を利用することもあるけどこれまで幸運にも意識せずに来られた大多数のユーザーが将来的潜在的には驚きとともに多重代入の評価順の詳細を理解させられるんだろうなということを考えると「作り込む価値はあるただしうまく実装できる限りにおいてはという評価が妥当かなと思う


20210412()

最終更: 2021-06-08T15:01+0900

[AtCoder] AtCoder Beginner Contest 198D 問題 Send More Money

昨日あった ABCD 問題は覆面算たまたま何か月か前FDCAJH × IBCFEH = FBAECIIJEGIHというのを解く機会があったのだけど時間制限がないせいで雑に総当たりをして済ませてしまっていた

 提出 #21665467 (TLE×6 / AC×34)

本番中は TLE で終わってしまったE 問題を 15 分で片付けて戻ってきたけどついに通せなかった

 提出 #21721083 (AC / 3703 ms)

制限時間が大盤振る舞いの5秒なんだよね

桁を1つ2つ減らすだけで時間がだいぶ違うだろうという予測はできたけど減らし方がわからなかったなんといっても目の前に文字で書かれた式があるわけではなく色々なケースが入力されるわけなので

TODO: Array#all? の中のテトは l<=r より l==r||l+1==r の方が厳しくて良い

TODO: 和の先頭の桁が1だとすぐにわかる場合がある

TODO: 列挙してから弾くより列挙しない方がいい(確定桁が1つあったとして未確定桁(=文字種-1)の順列の数だけ弾くのは手間だか)

TODO:ープの中の処理がシンプルになるように入念に事前準備をした方がいい

 Ruby によるすべての提出

現在 Ruby での AC 提出は 20実行時間が 109 ms から 4845 ms までと幅広い中央値は3秒台です。

たとえば(4桁 ms では最も速い)1.6 秒のこの提出>#21688714

先頭桁が0のケースを弾くと同時に末尾の桁が一致するかどうかだけ特別にチックしている一致しないケースでは文字式の全体を数値化する無駄がスキップできるこのひと手間が効果的なのだと思う

それと全くの想定外だったのだけど文字が 11 種類以上使われている式が入力されるケースがあったのだろうか(上の 1.6 秒の提出がチックして UNSOLVABLE を出力している)AtCoder の問題は入力や条件がきれいに整理されていて枝葉の手間が省けるように作られているだろうという甘えがあるのは否めない

3つある3桁 ms の提出が何をやっているのかはっぱりわかりません

 提出 #21741214 (AC / 921 ms)

4つの TODO を意識して書いたけど妥協した部分もある

  • 妥協1:確定した1を他の非ゼロと混ぜて列挙した
  • 妥協2:列挙を正と非負の2つに分けたがどちらにも permutation メソドを使いたかったがために配列の引き算やら配列の2段参照がループの中にある

とはいえこれを深さ優先探索で妥協なく書き換えただけで2桁 ms になる? そうRuby で現在最速の提出は 71 ms になっている

根本的なところで列挙してから弾くか可能性のある組み合わせだけを列挙するかという違いがあるのかなっち方面で書こうとしたときはある桁を見たときに未確定文字が0なのか1個あるのか2個か3個か未確定文字があるのはどの項か繰り上がりはあるのかということを考えるのが面倒くさくなって(=脳のキャパシをオーバーして)書けなかったんだよね

 提出 #21743144 (WA×1 / 90 ms)

書けなかったのをがんばって書いた時間は申し分ないけども1つの WAたぶん答えがないケースだと思うんだけど……

 提出 #21743445 (AC / 66 ms)

WA の原因は非ゼロチックが1つ抜けていたことそれと想定外だと書い「文字が 11 種類以上使われているケースはサンプル4がそうだったコピペするだけで全然読んでいない

 FDCAJH × IBCFEH = FBAECIIJEGIH

雑に総当たりしていたのを反省して(TLE は嫌だ!)数か月ぶりに書き直した提出 #21743445 をベースにして掛け算に対応させたprd の計算が難しかったのですよありえたかもしれないもうひとつの筆算のかたちっごく縦長になるけども

A = 'FDCAJH'.bytes.to_a # to_a is for Ruby 1.8/1.9
B = 'IBCFEH'.bytes.to_a
P = 'FBAECIIJEGIH'.bytes.to_a

C2D = [nil]*91
D2C = [nil]*10
NZ = [-1]*91; NZ[A[0]] = NZ[B[0]] = NZ[P[0]] = 0
F = lambda{|i,carry,aa,bb,zz|
	next carry<1 if i<-P.size

	a = (c = A[i]) ? C2D[c] : 0
	b = (c = B[i]) ? C2D[c] : 0 if a
	next D2C.each_with_index.any?{|e,d|
		next if e || d==NZ[c]
		C2D[c],D2C[d] = d,c
		next F[i,carry,aa,bb,zz] || C2D[c] = D2C[d] = nil
	} unless b

	prd = a*bb+b*aa+a*b*zz+carry

	if p = C2D[c=P[i]]
		next p==prd%10 && F[i-1,prd/10,a*zz+aa,b*zz+bb,zz*10]
	else
		p = prd%10
		next if D2C[p] || p==NZ[c]
		C2D[c],D2C[p] = p,c
		next F[i-1,prd/10,a*zz+aa,b*zz+bb,zz*10] || C2D[c] = D2C[p] = nil
	end
}
raise unless F[-1,0,0,0,1]

puts [A,B,P].map{|a|'%*d'%[P.size,a.inject(0){|b,c| b*10+C2D[c] }]}

20210406()

最終更: 2021-06-02T21:11+0900

[AtCoder] AtCoder Beginner Contest 004D 問題 マーブル

緑がほぼ埋まってきて残っているのは解けなかった問題ばかりそこで水色下位に手を出すも下位とはいえ水色はぱっぱっと解ける雰囲気ではないあれもこれも行列の問題で問題のその操作で何ができるのかさっぱりわからない

だから青色難しかったん1年くらい前に ABC004 を埋めようとしたときは力が及ばず C 問題までしか提出に至っていなかった

 提出 #21534453 (WA×2 / AC×83)

今回も一発 AC とはいかなかった原因はすぐに推測できて緑色が原点から離れない想定が誤っていたのだと思った

たとえば赤か青の片方が極端に多いとき外側に広がっていくよりも中心にある緑色の全体を移動させてでも中心に向けて移動する方が低コトになる分岐点がある

しかしそれを想定するとコドにするのがさらに難しくなりそうで困った

ちなみにこの提出の方針は……赤と青をそれぞれ -100100 を中心にして原点の左右で平らに並べる原点は超えない数が多ければ外側により大きく広がるそのあとで緑色を原点を中心として配置していく左右のコトを比較して赤と青を押しのけながら

提出に至らなかった1年前の方針はRGB の数から重心を求めて云々という感じっとすると緑の配置拠点を原点に限らず適切に移動することでWAった方針のまま AC に持って行けた可能性が?

 提出 #21541500 (AC / 1246 Byte / 65 ms)

J - 長い長い文字列(提出 #19035422) とかK - 転倒数(提出 #18029328)とか脳みそに余裕がなくなるとクラスや日本語変数がソースに現れる傾向があるみたい今回は両方出てきた(クラスのメソドの並びが不揃いなのが気になる左を先に書くで統一しておきたか)

イメージとしてはビー玉をざらざらと流し込んでから抵抗の強弱を感じ取りつつ右に左に均す感じ最大で900個程度の広がりしか考えなくていいからなんとかなっている

Ruby の他の提出を見るとゴルフをしていなくても 300ト台の短い提出がいくつもあるし内容も候補を並べて最小値を選ぶ二分探索で解(極小値)を探すなど特に大層な道具は必要としていないそれは頭の中で十分に理解して整理できているから書けるんだよなあ

できないからソースコド上でメソドと複数のイスタスに分割して整理しています。結果としてひと味違った解法になったと思う

 @2021-04-07

たぶん抗力の計算が間違ってるんだよね

押した力を上限として0以上それ以下の力しか発生しないはずだけどなんだか負の抗力によって隣の障害物に引っぱられていきそうになってるそれだと引っぱってる方はともかく引っぱられる方は必ずしも安定した低いエネルギー状態にあるとはいえなくなる

これが問題にならない理由もわかるけどそれはクラスの外部スタスの利用方法にあるのであってクラスのメソドの定義としては間違っている


20210401()

最終更: 2021-06-08T15:27+0900

[AtCoder] AtCoder Beginner Contest 155D 問題 Pairs

ABC の4問目で 400 点問題しかし青diffではある

 未提出 ABC155_d.rb27 (TLE)

時間制限を 10 秒にしてくれたらたぶん通るしかし実際の制限は2秒であり3秒ですらない慈悲はないの

Ruby の提出一覧を見ると AC していても軒並み1秒越えであり処理量がしんどい問題なのは間違いないのだけどその中にあって1秒を切っている提出もあるということは己の考えが足りないのであるぐぬぬ

 方針

入力を正負ゼロに分けて正負ゼロの積がそれぞれいくつ作られるかをまず求めた

負の積が K 個かそれより多いならば正の数と負の数のペアを考えるゼロは特に考えることがないK 番目が正の積の中に含まれているなら負の数同士のペアと正の数同士のペアを考える

これで考えるべき組み合わせが多少は減ったつもりになるが入力次第では何の足しにもならない本質的に計算量を削減する方法がわからなかった

それでどうしている

K 番目の数を -10^{18} から 10^{18} の範囲で二分探索している

ペアをある数とそれに掛け合わせるソト数列として持っているK 番目の数の候補となる数が与えられたときその数以下の積がいくつ作られるかはこれまたソト数列を二分探索することでわかる

ペアの数が馬鹿にならないN (2×10^5) のオーダーで存在するだか「ある数」と「ソト数列に注目してペアをソトされた状態で持っているそうすると K 番目の数の候補となる数が与えられたときかすりもしないペアを予め除外して考えることができるかすらないとは2通りあってすべての積がある数以下となるかすべての積がある数より大きくなる全か無ここで累積和と三度目になる二分探索を使っている

とまあこんな感じ(3つだが三重ではない)二重の二分探索のあいだに範囲を絞っているとはいえちまちまと順番に数え上げる線形時間の処理が挟まっているのがいただけない一番重たいケースで 10 秒はがんばった方だと思うよ知的方面でのがんばりではないけども


ト列とソト列の組み合わせでペアを作っているのにそのときに一方のソト列をばらばらにしてしまっているのが悪いのか? (短い方を選んでバラすようにはしてい)


 AtCoder Beginner Contest 174E 問題 Logs

この回 C 問題が解けなくて大爆死した回の ABCその後 C 問題を解いてF 問題も解いたけどF 問題が解けたら DE も解けたつもりでいいんじゃないかな?と書いたようにF の後でも DE が解けていなかった不思議なものでD 問題は緑埋めをしていた先月に普通に解いていた(提出 #21267825)緑がほぼ埋まってきて次なるターゲトは水色下位に移ってきているE 問題 Logs である解けない緑より解ける水色なのである

 提出 #21466620 (AC / 226 Byte / 350 ms)

解けました解けなかったときは何を考えて行き詰まっていた

  1. 最優先で切断する丸太はその時点で最も長い丸太である
  2. 2等分しますか? 3等分しますか? そもそも等分しますか?
  3. たとえば最終的な解が2等分した長さより短く3等分したよりも長くなるなら2等分したあとでその両方をさらにもう1回ずつ合計で3回分割する手間をかけるのは間違いである
  4. 解がわかっているなら最初から2回の手間で3つに分けるのが最適だと判る
  5. しかし解がわからない

今日の日記のタトルD 問題 Pairsす。関連は?

これまで二分探索といえばソト済み配列から特定の閾値をまたぐ値を選び出すのに使用してきたのだけど実はそれだけではなかった何もない空中から特定の値()を見つけ出すのにも利用できるのだった順序さえ与えられるなら解が -10^{18} から 10^{18} の範囲に存在すると判っているならったひとつの意味のある値()を二分探索してもいいのである

という気付きが Pairs を解く過程で(まだ解けてないけど)得られていたので今度はごく素直に解を決め打ってから最適な切断をすると切断回数の合計が何回になるかという逆算的な解法を発想することができたそういうことができるとわかっていた

二分探索を使った解法でかつて最も衝撃を受けたのは Vacant Seat というインタラクブ問題に対する提出 #2057817#2064531ったbsearch メソドから呼び出されるブロックの中でクエリを行っているいやね自分も提出 #7970588 の中で二分探索を使って答えを出してるんだけどそのことと対象となる具体的なソト列がないまま空中で二分探索を行う順序はクエリで動的に決定するということの間にどれだけの隔たりがあること

脳みそが不自由だと存在しない制約で思考が枷をはめられてしまうのだなあ最も基本的なツールといえる二分探索もまだまだ使いこなせていないのだった


ところで 350 msRuby で2番目に速い提出なのだけどどんぐりの背比べである2番目とそれ以降から頭ひとつ抜けて速いのがこの 提出 #15632506 (sushibon さん / 219 ms)二分探索は行っていない(トはしている)

二分探索というのは人間が考えることを放棄して機械に試行錯誤させる解法なのだけど人間が頭を使えば無駄なく速く答えを求めることができるのですねまあ何をどう考えればいいのかわかりませんけども

 AtCoder Beginner Contest 023D 問題 射撃王

これも空中二分探索解を決め打ってから考えるもはやおなじみである

 提出 #21974701 (AC / 245 Byte / 953 ms / 21392 KB)

Ruby では唯一3桁 ms に入った(他は4桁)log1つ分の差だと思うNlog^2Nlog単にソトする方のやり方を思いつかなかっただけなんだけど

 AtCoder Beginner Contest 149E 問題 Handshake

同じ青diffでもこちらのほうが Pairs よりわずかに難しいことになっている

 提出 #22314080 (AC / 283 Byte / 1489 ms / 22708 KB)

しかしこれは簡単な Pairs ということでいいんではないか? だって同じように二重の二分探索の真ん中で線形時間の足し合わせを行っていてTLE にならないんだもん

 Ruby によるすべての提出 (AC のみ / 実行時間昇)

概ね 300 ms から 500 ms の間におさまっているから自分の 1489 ms は最も遅い部類に入るPairs を解くヒトが(Pairs の提出一覧はもちろん)ここにもあるのでは?(ったら読むわけにはいかな)

 提出 #22329595 (AC / 422 Byte / 717 ms / 22940 KB)

ープの構成は変わらないまま脳筋的努力を重ねた結果倍近く速くなったしかし 300 ms にも 500 ms にも及ばないっぱり計算量のオーダーを減らす手がどこかにあるのだろうそれがわかれば PairsAC できるぞ

 提出 #22754190 (AC / 531 Byte / 246 ms / 24136 KB)

ったど246 msRuby では僅差で一番速い

どこでオーダーが改善できる解法の根幹をなす大外の二分探索の log は欠かせない入力をなめる N もなくせないなら内部の二分探索を削るしかないのはわかってたんだけどlog を削らなければいけません「はい削りましたができるなら脳みそはいらないわけで……

トはこの問題の前に解いた射撃王にあったlog ひとつの差ってちっとした違いなんですよっと見る角度を変えるだけ……でなんとかなるなら脳みそは()

実際のところ二分探索の代わりに shift/pop を繰り返すようにしただ


261 ms の提出を読んだA 数列の値から添字を得る逆引きインデックスを事前に作成するのがキモであるようだったA の値の範囲は 10000 以下なのでそれが配列のサイズとなったところで大した大きさではない

言われてみればそうだねという感じ(だけど思いつかなかった)313 ms の提出も 328 ms の提出も 329 ms の提出も同じ下拵えをしていた

 提出 #22756111 (AC / 893 Byte / 977 ms / 30968 KB)

ったど! たまたまぶつかった別の問題ばっかり3問片付けてきたけどとうとう本丸の Pairs をクリアしたぞ! (提出日時を見ればわかるけど今日は5月の下旬なのだ日記とは)

これもやっぱり Handshake と同じように二分探索の代わりに shift/pop を繰り返すようにしたPairsHandshake と違って A 数列の値の上限が 10^9 なので逆引きインデックスを用意しておく方法は使えなかったのではないかと思う

ところでぎりぎり3桁 ms には入ったけど、759 ms には負けました配列の操作でなく添字の操作をしているところが効いてるのかな?


20210322() 「進入不可」と「進入禁止はどちらが強い抑止効果を持つだろう人によるだろう■進入不可……本当に入れないかどうかは確かめてみなければわからないな!■進入禁止……なんで禁止されてるんだろう誰が禁止してるんだろうまあって入れんこともなさそうだし■だいたいこんな感じありとあらゆる落とし穴に一度以上はまることを自認している一度目は(なぜか人が避けて通る)トカトの疎通を確かめるために(穴に落ちるまで穴があるかどうかは不確かだ)二度目以降は迂闊さのために■再シマノのハブの説明書にクイックリリースのハドルの向きを規定する記述があってそれに続けて茂みに突っ込んだりしたときに強制的に開放されないためだとかなんだとかそうする理由が一緒に書かれていたとてもとても素晴らしいと思います。納得できる理由がなければ動けない人間なので! 禁止するにも作法があるのではないそこまでする義理はないって? いかにもしかし実効性を求めるときには考えてもいい


20210321() [AtCoder] 今日の ARC115いつものように 20 時までにお風呂に入って 21 時前にあがって PC 前でスタンバイしていたら気付いたときにはもう残り時間が半分を切っていたまあそういうこともある帰宅が19時過ぎなのでもとから20時スタトは厳しい時間が合わなくて1時間遅れで参加した ABC も過去にはあった>ds14050@ABC156そのときのパフォはABC3完で177プラス1時間で D 問題まで解けていたのがくやしいところARCA 問題1完最遅レベルのパフォは……知りたくない■今日のパフーマスをどのように受け止めるありうる理想世界の自分は ARCA,B,C 問題くらいは1時間でささっと解けているはずなので1時間で3問解いたパフーマスが2時間で3問解いたかのように評価されるのは不本意であるが1時間で1問しか解けなかった途中で0完も覚悟した低パフーマスの第一の原因は自分の残念なおつむにある残念なことであるなあ