/ 最近 .rdf 追記 設定 本棚

脳log[2023-03-08~]



2023年03月08日 (水) パスワード/PINコード/暗証番号 コイツラの使い分けもわからんです (#4423426)」■自分の解釈。PIN と暗証番号はカードや SIM などデバイスとともに使われるもので、文字種や文字数が数字だけ4桁などに限定されがち。セキュリティは第一にデバイスを所持・管理していることによって確保する。PIN と暗証番号はデバイスを無効化するまでの時間を稼ぐ補助錠に過ぎない。というふうに理解しているのだけど、間抜けがなし崩しに窓口をインターネットに広げカードリーダーも使わず暗証番号を唯一のセキュリティに格上げしたりする。■パスワードなどの呼び名に意味はないよ。使える文字種が推定できるだけ(全国民に理解してもらうためにこれらパスワード的なものの呼び名をすべてパスワードに統一するならそれもできなくなる)。どのような使い方をされるものかで区別する。関連「2種類の秘密の質問 (20220502)」■スラドのコメントにあるけど、マイナンバーカードにまつわる「電子証明書のパスワード(マイナンバーカードの取得時に設定したマイナンバー署名用パスワード)」「利用者証明用パスワード」「券面事項入力補助用パスワード」「マイナンバーカード用パスワード」の数々はまじでわからん。ほとんどが数字4桁のパスワードみたいだから、マイナンバーカードとカードが内蔵する証明書のための PIN なんだろうけど、とりあえず全部同じ4桁にしておけばいいんでしょ?■PIN を辞書で引くと「Personal Identification Number (クレジットカードなどの) 暗証番号」だって。識別されるものは人ではないし(口座?)、識別に用いているのもカードであって数字ではない。PIN のどこに personal で identifying な要素があるのか。Card Number もしくは Device Number が相当では?


2023年03月07日 (火) Android にプリインストールされていた時計アプリの残念な点。自分は朝のアラームを2つ用意している。タップタップと両方を有効にしようとしても1つ目しか有効にならない。トグルスイッチを連打してみればわかるけど、アニメーション中に加えられた操作は無視される。そしてそれは異なるスイッチであっても同様で、あるスイッチがアニメーションしているあいだに他のスイッチを操作することができない。かったりーな。■どうあってほしいか。アニメーション中に2打目が来たら即座に遷移を完了して2打目に反応してほしい。~ほしいとか白々しく書いたけど、本心では当然そうあるべきだと思ってる。とろくさいアニメーションが人間のテンポを決めるべきではないし、機械の都合で人間の操作を捨てるべきではない。機械に指示を出した後でいちいち聞こえましたかと確認したくはない。


2023年03月04日 (土) [AtCoder] 今日あった ABC292のふりかえり。コンテスト成績証自分のすべての提出。■A 問題「CAPS LOCK」。入力の小文字を大文字にする。Ruby のこの手のメソッド名がこれまで一度で当てられたためしがない。JavaScript なら toUpperCase()。Ruby では? capitalize, toupper, uppercase, upcase さてどれでしょう。答えに行き当たらないこともままある。■B 問題「Yellow and Red Card」。0=カードなし、1=イエロー、2=レッドで管理すれば良い。イエローの 1 とレッドの 2 が入力(c)として与えられているからと分岐をひとつサボったけど、まあどうでもよろし。■C 問題「Four Variables」。N×N の組み合わせは許されないけど掛けて N 以下になる組み合わせは列挙できる。それよりも、問題文の「AB+CD=N」が4、5回読んでも理解できなかった。サンプルにヒントを求めても解答例が理解できなかった。つまり、A=12、B=34 だとして、AB=1234 だと読んでしまってそこから抜け出せなかった。A×B+C×D=N の意味ではないかとようやく推測できて、その解釈でサンプルが理解できることを確かめても、まだ半信半疑で問題に本腰を入れられなかった。問題文が難解。■D 問題「Unicyclic Components」。UnionFind をするついでに辺の本数を数えた。グラフの性質を踏まえたかっこいい解法で解きたいなと思ったけど、最近あほなので愚直にやった。■E 問題「Transitivity」。最初はダメ解法に捕まってしまった。こういうの。ある頂点を見て、入ってくる頂点と出て行く頂点の組み合わせを考える。すでに両者に辺が通っているなら操作はいらない。そうでなければ直通辺を足す。このやり方でやるとサンプルの3の答えが 17 と過大になってしまった。自分としては珍しいことだけど、そこで一旦リセットしてイチから別の解法を考えてみた(出口のない泥沼の数合わせに終始するのが見えてしまって瞬時にうんざりしてしまったのだ)。ある頂点から到達できる頂点というのは、必ず直通辺が通っていなければいけない頂点なのであって、距離2以上の頂点が操作の対象。有向辺なので問題は始点に選んだ頂点ごとに独立。足がかりに使う距離1の隣接頂点も無関係。N の2乗が通る制約なので全頂点を始点にして BFS をした。■F 問題「Regular Triangle Inside a Rectangle」。辺の長さが1の正三角形をちょっとずつ回転させて外接する矩形の大きさを調べた。そこから矩形の拡大倍率を求めたんだけど WA×10 が解消できなかった。二分探索をするのだと見かけてテキトーにでっちあげてみれば WA×43 と悪化していて AC が遠い。水 diff ですってよ。


2023年03月03日 (金) [AtCoder] 精進。ふか杯 5th Contest-D「Bintree」。制限時間が5秒だけど、ちょっと油断していたよね。■最初の提出 #39379910 (TLE×4)。ビット列で集合を管理する。重さもビット列ごとにメモしておく。ビット集合から根にする1ビットを選ぶのは BIT を参考に i&-i で。部分集合の列挙は b = bits と初期化してから b = bits&b-1 で。メインはメモ化再帰。やりやすいからこういう方法でやったけど、必要以上にテクニカルなことをしているつもりだった。しかし TLE。■2番目の提出 #39380194 (TLE×1)。これのアイディアは1つで、左の子集合(L)と右の子集合(R)に L<R という大小関係を仮定して L>R の場合の再帰呼び出しを省いた。省いた分は ×2 で辻褄が合う。■提出 #39381113 (AC / 4266 ms)。これのアイディアは2つ。1つ目は前の提出のアイディアの改善。L<R を仮定しているのだから最初から列挙回数を半分にすればいい。2つ目はコードテストで数百 ms の効果があった(けれど単体では TLE 解消に少し足りなかった)チューニング。ビット列に対応した重さを予めメモする部分のコードで、いちいち各ビットが立っているかどうか調べるのをやめた。■(オーバーヘッドが大きい) Hash を使うメモ化再帰をやめて Array を使うボトムアップの DP に書き換えるとさらに改善するだろうけど、それは遷移がわからなくて書けない。


2023年03月01日 (水)

最終更新: 2023-03-03T18:23+0900

[AtCoder] 第12回 アルゴリズム実技検定 過去問

自分のすべての提出

 A - 信号機

赤になってから Z 秒時点でボタンを押したら X 秒後に青に変わるけど、最低 Y 秒間は赤の時間が確保されているように。[Z+X,Y].max

 B - クレジット

正整数 を 100 で切り捨て除算する。桁数が 50 万と 1 になることがあるのでうっかり gets.to_i してはいけない。いや、案外平気かも。文字列として2桁削るのが無難だけど N が2桁以下のときに 0 を出力するのを忘れない。

 C - 偏ったサイコロ

出目の和ごとに場合の数を記録する DP。6×6×6×18 程度の計算量。

 D - 採点

辺の集合が与えられたときに多重辺と自己ループの有無を調べる。

強いて注意点を挙げるなら、多重辺を調べるときに文字列のまま比較すると 1 22 1 の同一性を見逃してしまうことと、隣接頂点リストを配列として持つと星型のグラフで多重辺のチェックが O(N) になってしまって全体が O(N^2) で TLE になってしまうこと。Ruby なら Hash で隣接頂点を管理する。

 E - 棒倒しゲーム

問題文に書かれている通りにスコアを消費していって、スコアに過不足がないかを調べる。

 F - 薬剤師

限られた数の薬と数限りないアレルゲンがある。薬が含むアレルゲンと人が持つアレルギーが交わらないようにするとき最も効果の高い薬の番号を答える。

制約を見ないと方針が決められない。薬は最大 100 種類。アレルゲン/アレルギーは最大 20 万種類。人は 10 万人。ただし人が持つアレルギーの総数が 10 万までに抑えられている。

人が持つアレルギーごとに使える薬を定数時間で調べて 1000 万の処理量。アレルゲンをキーにして 100 ビットのビットフラグで使えない薬を管理した。

 G - Wildcards

N が 1000 以下、L と K が 10 以下に抑えられているので、一致しているべき文字のインデックス(L-K 個)を決め打ってから文字列の集合を分類して絞り込んでいった。考えるのではなくうまく実装する。

 H - 3種の硬貨

問題文から読み取るべきこと。銀貨が有限だが無数にあると考えていい枚数ある一方、銅貨は X 枚に限られている。両替はできない。金銀銅の価値は差が非常に大きく、価値の大きい貨幣の多寡を価値の小さい貨幣でひっくり返すことができない。

なので、X 枚の銅貨をできるだけ多くの金貨に変えることをまず考え、金貨の枚数が同じ場合に使用した銀貨の枚数を少なくすることを考える。

そこまで分かれば銅貨の枚数ごとに金貨と銀貨の枚数を記録する DP をやるだけ。

 I - 毎日のリンゴ

悲しさを考える前にまず m で割った n 個の余り a%m,2*a%m,3*a%m,...,n*a%m について考える。d = gcd(a,m) とおく。m 種類の余りは周期 c = m/d のサイクル(d 個)に縮約される。それは次のようなスクリプトで可視化すればわかる。問題を解くだけなら証明はできなくてもいいでしょう。

n,a,m = 10,6,10 # d=2
p (1..n).map{|i| a*i%m } #=> [6, 2, 8, 4, 0, 6, 2, 8, 4, 0] 周期 c = 5
n,a,m = 10,10,6 # d=2
p (1..n).map{|i| a*i%m } #=> [4, 2, 0, 4, 2, 0, 4, 2, 0, 4] 周期 c = 3

サイクルの和は初項 0、公差 d、項数 c の等差数列の和なので c*(c-1)/2*d。サイクル当たりの悲しさは、余りが 0 の項の悲しさが 0 であることに注意して m*(c-1)-(サイクルの和)

サイクルから外れた n%c 個の悲しさをどう求めるか。一発で求まる式があるとは知らない。m が 300 以下の制約だから 10 万件のテストケースごとに最大 299 項の和を求めるとなると最悪 3000 万の処理量。Ruby ではちょっと厳しいかな。

n%c と c-(n%c) を比較して、n%c の方が小さいなら悲しさを足し上げる、c-(n%c) の方が小さいならサイクル当たりの悲しさから引き算で逆算することにして、最悪 1500 万の処理量ならまあまあありだと思う。同数ならどっちでもいいよ。

 「サイクルから外れた n%c 個の悲しさをどう求めるか。一発で求まる式があるとは知らない」

n%c の区間をどんどん割って余りを取って効率的に数えられるような気はする。ユークリッドの互除法くらいの効率で。でも数字が合わない。

 J - スプリンクラー

長方形と円のどちらかがどちらかを含む場合を除けば、扇型の面積から直角三角形の面積を引いたり引かなかったりすることで水を撒く面積が求まる。

扇型の面積(s)の求め方。半径を r、弧を l とすると s = r*l/2。弧の長さ(l)の求め方。中心角(ラジアン)を θ として l = r*θ。中心角(θ)の求め方。三角形の3辺の長さがすべて分かっているので、余弦定理から中心角の cos が分かり、cos が分かれば acos 関数で角度が分かる。

ここまでわかればあとは場合分けを間違えないようにやる。

 K - 連結チェック

辺を繋いで連結判定をするのはおなじみ UnionFind で。辺を切断する方法は知らない。辺を繋ぐのが 10 回以下に制限されている一方、切断する回数はいっぱい。クエリを逆向きに処理すれば切断は接続に、接続は切断に変わる。10 回の切断をどうするか。UnionFind のデータ構造を丸々コピーしても 10 万×10 = 100 万だから許される。落ち着いて頭の中を整理して逆向きに考えられたら実装するだけ。

 L - 展覧会

ヒントを見たよ。https://twitter.com/kyopro_friends/status/1630510505323540481

ポイントを抜き出せば「「最終的にmod3で何枚選ぶか」をkと先に決め打っておけば」というだけのことが独力で解決できないのだな。

基本は絵画を順番に、選んだ個数を3で割った余りが 0,1,2 のときのおすすめ度の最大がいくつかを記録する DP をやる。ここに「最終的にmod3で何枚選ぶか」が関わってくるので、(最終的な余り 0,1,2)×(現在までに選んだ個数の余り 0,1,2) = 9 通りを記録する DP をやる。答えを表示するときは (最終的な余り,現在までに選んだ個数の余り) = (0,0),(1,1),(2,2) の3通りから最大値を選ぶ。

 M - シリーズ

ある範囲のセット買いと単品買いを組み合わせて全 N 巻を揃えるのにかかる費用の最小値を求める問題。

i を増やしながら 1 から i 巻目までを揃えるのにかかる費用の最小値を記録していく DP をする。セット買いについては範囲の右端に注目する。

単巻買いの場合、1 から i 巻目までを揃えるのにかかる費用の最小値(C[i])は C[i-1]+A[i]。(A[i] は i 巻目単体の価格)

範囲の右端が i であるセット買いの場合、範囲の左端を l、セット価格を b とすると、i 巻目までを揃える費用の最小値(C[i])は min(C[l-1],C[l],C[l+1],...,C[i-1])+b。区間最小値はセグメント木にお尋ねします。

 N - 上からと横から

まだだよ。

 O - 2個のボール

まだだよ。


2023年02月28日 (火) [AtCoder] 日曜にあった AtCoder Beginner Contest 291(Sponsored by TOYOTA SYSTEMS)のふりかえり。■A 問題「camel Case」。ASCII コードで大文字小文字は特定の1ビットを見ればわかる(それ以外のビットは共通)。■B 問題「Trimmed Mean」。フィギュアスケートとか芸術競技の採点方法っぽい? ソートして真ん中を取り出す。■C 問題「LRUD Instructions 2」。賢い判定方法があるかなとちょっと気にしてみたけど、普通にメモを取ってシミュレートした。■D 問題「Flip Cards」。D は DP の D! 直前のカードが A のときの場合の数と B のときの場合の数から今回のカードが A のときの場合の数と B のときの場合の数を出す。初期値をどうするか迷った。A のときの場合の数を 1、B のときを 0 にして、答えは (A のとき+B のとき)%998244353 にしたら合っていた。■E 問題「Find Permutation」。ABC285-D「Change Usernames」を思い出す問題。自分より小さい要素がない要素を順位確定要素としてキューに追加して他の要素の前から取り除いてはキューを伸ばしていった。ただし、どの時点でもキューの長さは1でなければいけない。2つ以上の要素がキューにあるとどちらが小さいかわからない。キューの長さが1ずつしか増えないとわかったときにちょっとせこいことを考えて、キューをそのまま答えの配列にしようとした。残念ながらそのまま答えにはならなくて、順番と添字を入れ替える処理が必要だった。自分の提出にはバグがあるような気がしていて、キューが途中で途切れたときに対応できていないと思う。運良くそういうケースがなかったのかな。E 問題に関連してトポロジカルソートの語が頻出している。トポロジカルソートがわかるなら ABC041-D「徒競走」(青 diff) が埋められないなんてことはないはずなんだよなあ(まだ埋められていない⇒わかりません)。■F 問題「Teleporter and Closed off」。都市 k を通らないケースというのは、都市 k-M+1,k-M+1,...,k-1 から都市 k+1,k+2,...,k+M-1 へ飛ぶ 1+2+3+...+(M-1) 通りが上限であり、M は 10 以下なので、各 k について1つ1つ調べて良い。あとは k の手前の都市へ移動する最小回数と k の奧から移動する最小回数が1ステップでわかればいいので、前からと後ろからの2回 DP をやっておく。考察にはそれほど悩まなかったけどバグ取りをしたりしてるうちに気が付いたら 45 分経っていて驚いたよね。しかも TLE だった。2115 ms であり 22xx ms ではないから 115 ms を削る小手先の変更を2つ入れて AC。ペナルティと合わせて 9 分のロスだった。それ以前に時間をかけ過ぎていて E までを 30 分で片付けた貯金がパーなんですよ。■G 問題「OR Sum」は制限時間8秒がやばいよね。考察であっさりスマートに答えを出す系の問題ではない。あきらめちゃうよ。■自分のすべての提出コンテスト成績証。■E 問題への提出の潜在的バグについてお風呂で考えてきた。キューが途中で途切れるのはどういう場合だろうか。たとえばグラフが複数の連結成分に分かれているとき。これは始点が複数あると検出されるならバグには当たらない。しかし始点がなかったら。1つまたはそれ以上の連結成分が環状部分を持っているなら、キューは途切れる。バグか? おそらくそういうケースは「入力に矛盾しない A が存在する」という制約により除外されている。潜在的バグはバグではなかったしテストケースにも不備はなかった。そこまで見切った上での割り切った実装(9行目の if (1..N).all?{|n|)だったらかっこよかったんだけどな。ABC285-D「Change Usernames」のときも「入力制約のきれいさに助けられた」って書いてるんだよなあ。


2023年02月19日 (日) [AtCoder] 精進。今日あった Toyota Programming Contest 2023 Spring Qual B(AtCoder Beginner Contest 290)-E「Make it Palindrome」(水 diff)。時間中は、各数字がすべての連続部分文字列の中で左側に何回出現するかと右側に何回出現するかを数えようとしていた。それはうまくない。ヒントを読みました。「E: バケットソートしてから端から貪欲」。すべてのペアについて個別に考えるのが許されない制約だけど、端から貪欲が可能ならペアを考えても良い。ただし何らかの属性でひとまとめに取り扱う必要はある。■提出 #39053926 (AC / 210 Byte / 342 ms)。グループ化してソートして積算しました。ある要素について左右にある要素数のうち少ない方を考える。少ない方の要素数が M1,M2 である2つの要素がペアになったらそのペアを回文の中の比較対象として含む部分文字列は min(M1,M2) 個ある。■Ruby によるすべての提出を見てると自分の 342 ms は目に見えて遅い。最遅である。左右にある要素数の規則的な増え方減り方に注目すればソートする手順が余分で、そのせいで遅くなっている。提出 #39117164 (AC / 162 Byte / 157 ms)。遜色ない速さになった。実はこの書き換えは全然すんなりいかなくてバグに苦しんだ。理解の浅さが露呈したわね。■■■D 問題「Marking」の設定が灘校文化祭コンテスト 2022 Day2-A「ACPN」と同じだということに遅まきながら気が付いた。それを解いたときの日記に「実験したら M 個の剰余が出現する周期は K と M の最大公約数で分割されるようだった。たとえば M が 10 なら剰余は 10 種類あるが、K が 5 のとき最大公約数は 5 で、M 個の値は周期 2 の組が 5 組となって出現する。あとはこの周期で N が割り切れるかどうか」と書いてあるんだけど、えっと、なんで「割り切れるかどうか」なのかよくわかりません。去年は今より頭が働いていたのだなあ。


2023年02月08日 (水) [AtCoder] 精進。埋めきれずに穴が空いていた ABC035-D「トレジャーハント」(水 diff)。ちょっと考えて気が付いてほしいんだけど、滞在する町は1つに決めていい。複数の町に滞在する理由はない。あとは往路と復路に分けて町1からの最短距離がわかればいいのでダイクストラ法を2回やる。えっと、なんで埋められなかったの?>過去の自分■提出 #38710483 (AC / 1026 Byte / 480 ms)。■もちろん経験からつまずきポイントを3つまで挙げることができる。1つ目は「なんで滞在する町を1つに決めていいの?」 たとえば町1を出て町1に返るパスが与えられたとして、滞在する町はパスにある町のうち1分あたりの報酬が最高の町一択になるでしょう。2つ目の疑問は「そうはいってもどのパスが答えになるかはわからないじゃない?」 視点を変えて、ある町に滞在すると決めてからその町での滞在時間を最大化するパスを考える。それはグラフでおなじみ最短経路問題になる。3つ目の疑問は「町 A に滞在すると決めて最短経路を求めたら経路にある町 B の滞在報酬の方が大きかったりしそうなんだけど?」 それは町 B に滞在すると決めたときに考える範囲なので無視して大丈夫。4つ目の疑問は「すべての町について町1に返る最短距離を求めると時間がかかりすぎるんだけど?」 辺の向きを逆にしたもうひとつのグラフで町1を始点にした最短距離を1回だけ求める。■たぶん1年半前の自分は3番目の疑問に答えられなくて分割した問題が解けなかったのだと思う。別の問題に対する感想だけど「難しいなこれ。ある時点のループにおいてベストを求めなくていいし不正確でもいいということを見極めて受け入れるのは」「自分はこの手の見極めが苦手みたいだ」と書いたように、問題を分割したにもかかわらず分割した枠の外にあるより良い解に目移りしてしまって問題が解けなくなってしまうところが8か月前までの自分にはあった。


2023年02月07日 (火) [AtCoder] 精進。ABC008-D「金塊ゲーム」(黄 diff)。以前順番に埋めていっていたときに埋めきれなかった古い ABC の問題。今となっては何がわからなかったのかわからない。だって今日は以前に立てた方針をそのまま実装しただけなのだから。■提出 #38698822 (AC / 469 Byte / 155 ms)。最初四角の枠があって、機械を動かすごとに枠が4分割される。枠の中にあるどの機械を一番に動かすかのがいいかは総当たりで決める。枠を定める4つの値のバリエーションは N+1 個から2個と N+1 個から2個を選ぶ組み合わせの掛け合わせだから高々 N の4乗程度。N≦30 だから N^4≦81万。枠の中にある機械の数は N 以下だから全体で N^5≦約2400万を見込んでおけば足りる。定数倍が軽ければ Ruby でも通る。

最終更新: 2023-02-08T02:07+0900

[Ruby] Ruby クイズ (複合代入編)

a = b = 0 # 初期化
a += b += a += 1 # 本題
p a #=> 1? 2?

右から順番に a に 1 を足して(a=1)、b に a を足して(b=1)、a に b を足して(a=2)、と考えると間違える。「自己代入」を読むと「この形式の代入は 式1 = 式1 op 式2 と評価されます。ただし、op が &&, || の場合には(略)」と書かれている。一番右の a += 1 が評価される前に一番左の a +=a = a + と分解されていて古い a の値が評価中の式の値として一時的に記憶されているのだと考えられる。a の値は 1 になる。ちなみに C++ では 2 になった。

この前の ABC288-D が解けなかった理由のひとつにはこの罠に気がつかなくて合わせるべき数字がそもそも間違っていたということがある。それがなくても解けなかったのもたしかだけど。


2023年02月06日 (月) [AtCoder] 精進。先週末あった Toyota Programming Contest 2023 Spring Qual A(AtCoder Beginner Contest 288)-F「Integer Division」(ぎりぎり黄 diff)。当日は D と E をひとしきり考えて諦めた後は F に狙いを定めていた。狙いはまちがっていなくて、3問のうちまず F が解けた。■提出 #38678223 (AC / 143 Byte / 91 ms)。前からの DP で解ける。何を覚えておいて何が計算したいか。1桁目が A、2桁目が B だったとして、(AB+A*B) に当たるものを覚えているとする。3桁目が C だとして求めたいものは問題の定義から (ABC+A*BC+AB*C+A*B*C) なんだけど、AB*C+A*B*C は覚えておいた (AB+A*B) に C を掛けて求まるとして ABC+A*BC はどう求まるか。覚えておいたものを 10 倍すると (AB0+A*B0) となって惜しい。不足は (1+A)*C であるが 1+A とは何か。2つ前までに覚えていた値の和だということがサンプルを丁寧にデバッグしていてやっとわかった。わかったというか見つかった。がちゃがちゃデバッグ、良くないね。■D 問題「Range Add Query」はまず操作の累積和を記録して、区間の末尾 K 要素が0になるかどうかを見たいと思った。しかし数列全体を通した累積和から区間の前 K-1(?)要素の影響を引き算する方法がわからなかった。■E 問題「Wish List」は前から順番に何個の商品を選んだ場合に最小コストがいくらかを記録していく DP をやりたいと思った。前に最初何個の商品があって最後何個まで減るかが決まっていれば最適な順序コスト(C)の選び方がわかる。そしてその選び方は前にある商品の選び方に影響を与えない。M 個の商品については必ず選ぶこととし、それ以外の商品は選ぶ場合と選ばない場合を両方考える。時間に追われてふわふわしてる頭で書ける DP ではないのだ。■E 問題。F の AC から2時間弱、ここまでの日記を書いてからじっくり集中して AC です。提出 #38679476 (AC / 465 Byte / 2166 ms)。■残った D 問題は「あ、一応。典型の考え方も含めて。「この問題そのものが有名」という話ではない。 ・区間に足し引きする問題は、imos法の逆の考え方で、始点・終点に足し引きする問題に変換できる ・足す区間が一定(長さK)の場合は、modKが同じ場所しか互いに影響を与えないので独立で考えられる の2つが典型」とか「X_i, X_{i+1}, \cdots , X_{i+K-1}にcを加算するとはどういうことでしょう。Aを多項式、すなわち A_1 + A_2x + \cdots + A_Nx^{N-1}と考えると、 c(x^{i-1}+ \cdots x^{i+K-2})を足すことです。つまり、この問題は、 1 + x+ \cdots + x^{K-1}の倍数を足して0になるか、言い換えると多項式を 1 + x + \cdots + x^{K-1}で割って余りが0か否かということです」とかのネタバレをすでに読んでしまったのだけど、だからといって自分で書ける目途は立たないんだな。咀嚼が足りない。


2023年02月05日 (日) [BOOX Max2] 1月のアップデートで 3.3.1 になったのだけどこのバージョンには注意が必要なように思う。自分は自炊したスキャン画像を束ねた PDF をプリインストールの Neo Reader で閲覧している。アップデートで 35044 になったバージョンでは全体の反応がきびきびしていることに気付く。ハードウェアが同じならからくりはどこにあるのか。レンダリング品質が劣化している。システム上で4種類から選べるリフレッシュモードでは最も高品質なモードを選んでいるにも関わらずだ。正直ひどい。文字の線に穴が空いたり棘が生えたり、全体につぶつぶしている。コントラスト設定にある画像のディザリングという項目を ON にしたり OFF にしたりするとそのときだけは以前のなめらかな線で描画されるけど、その状態は維持されない。Neo Reader の画像のレンダリングに問題があって、関係しそうな設定も無視されて役に立っていないように見える。■Neo Reader を起動した状態でシステムステータスバーを表示するとリフレッシュモードがスピードモードに変更されていることがわかる。しかし設定変更のための場所には「アプリの更新設定をご利用ください」と表示されるのみで変更ができない。■Neo Reader の画面リフレッシュというメニューでより細かくリフレッシュモードが設定できるみたい。おおまかにノーマル/リーガル/スピードから選べるように見えるけど、ここで選ぶノーマルモードがスピードモード品質なところが問題になっている。高品質なモードを捨てる意図はないだろうから、設定が反映されない不具合だと思いたい。はよ戻せ。■Neo Reader のメニューで画面リフレッシュの1つ下にある設定という項目を選んで設定の一覧を表示して特に何もせずに閉じるだけで描画がなめらかになった。ちなみにシステムステータスバーの表示は一時的に変更されたスピードモードのまま。■まとめるとこう。Neo Reader はシステムの設定とは別に独自の画面リフレッシュ設定(ノーマル/リーガル/スピード)を持っている。Neo Reader を使用しているときはシステムのリフレッシュモードがスピードモードに固定されて変更できなくなる。Neo Reader のリフレッシュ設定はアプリを開き直すたびに無視され、(Neo Reader が定義する)スピードモードで描画がされる。しかしアプリの「設定」画面(「画面リフレッシュ」の1つ下の項目)を一度でも開くことで画面リフレッシュの設定を反映させることができる。なお、リーガルモードとノーマルモードの違いは確認できなかったので、実質的に Neo Reader の画面リフレッシュの大枠はノーマル/スピードの2択になる。操作を繰り返してるとリフレッシュに失敗して画面が重なる現象が何度も起こってるので、諸々質の低いバージョンなのだろう。とりあえず面倒でも手順を踏むことでまともな表示にできたのは助かった。


2023年02月03日 (金) こういうの好き。やってみた。「簡易版職業適性テスト(Gテスト) | job tag(職業情報提供サイト(日本版O-NET))」■もっともプリミティブな、脳みその形とでもいうようなものを知るためのテストかな。Result.png / plot.png / plot2.png / plot3.png■展開図から立体を選ぶ検査 A (空間判断) の成績が一番悪い。半分も解けていない。この成績が上がるだけで赤丸(自分の位置)が EG (エンジニア) の水色球に近づいていく。最も近いのが MS (マルチスキル) の桃色球。検査 C (数理)がちょっと浮いてる以外はほぼ桃色中心と一致している。■検査 A では1、2問を除いていいペースで進めていたつもりだったので、適性がある人とは基本となるペースが全然異なってるんだろうなと思う。検査 B (言語) は拙速気味にだいぶ飛ばして進めていたけどそれでも4分の3しか到達できなかった。こうなると何も読まずにクリックしていくだけでも完答は難しいんじゃないかと思うけど、きっかけとなったツイート(「厚労省のIQテストっぽい奴で職業診断できるやつ、やってみたが、うーん… どうなんだろうこれ? https://t.co/32xsKAkZIa https://t.co/NvEWICJZN6」)の下に満点の人が現れている。無理ゲーではないのか……(困惑)。


2023年01月29日 (日) 靴を買った(配送遅延で1日遅れの今日届いた)。「ランウォーク メンズ | ラギッドソール | レースアップブーツ | コーヒー | 26.0 【ASICSウォーキング公式】」。セールで約 25000 円だった。三日(みっか)前雪の残った歩道を歩いてるときに靴底がはがれたんよね。穴が空くという状態ではなかったけど、靴底のパターンが失われてまったいらになってしまった。これまでにボンドで間に合わせていたのだけど、ぴろぴろとはがれてきていたのがとうとう限界を迎えたというわけ。それが 11 年前の1月2日に買ったこの靴「Amazon.co.jp: [アシックス] asics サルティス ウォーキングシューズ WSR644 29 (コーヒーブラウン/25.5) : ファッション」。これは雨の日ではなくバイクの日でもないとき用の靴。同じものが手に入れば一番面倒がないんだけどそれは無理なので、同じアシックスから。自分は靴はひもでぎゅうぎゅうに締めつけたいタイプ。スケート靴やスキーブーツや登山靴のように。