2022/10/12(水)

最近Maixduinoに載っていたESP32をちょっと扱ったので単品のESP系モジュールも試食したくなった。ESP-WROOM-02が手元にあったので使ってみることにしたのだが、ユニバーサル基板に線をどう引き出すか大変に悩む。1.5mmピッチなので普通のピンヘッダをはんだ付けしてしまう訳にはいかない。

裏返してしまうと固定方法に困るし、表向きでは基板のランドに変なところで触れてショートしそうで怖い。裏面PADにピンヘッダをはんだ付けして少し浮かせることにしたのだが、これが恐らく間違いだった。大きいPADだからかかなり熱さないとはんだが乗ってくれず、めちゃめちゃに時間をかけてしまった。最終的にはんだ付け自体は終えたのだが、どうもちゃんと動作しない。熱で故障してしまった可能性が結構あり、無計画に付けたぐちゃぐちゃな配線をチェックする気力もなかったので基板ごとお蔵入りに。

後からよく考えたら、QFPのICを実装するときと同じように両面テープなりなんなりで固定してカプトンテープでランドから絶縁してしまえば良かった。部品を無駄にしてしまった。この手の小型基板に実装されているモジュールは個人的になかなか扱わないので、まぁいい勉強になったと思っておこう。

こういうタイプのパッケージのモジュールの他の例としてはK210、TWE-Lite、RN42あたりが挙げられる。ラズピコとかあたりは2.54mmピッチにしてあるから都合が良いのだが、そうでないのの対処は初めてなので焦ってしまった感。


今日解いた競プロの問題。

ABC272-E: これ水diffってマジ?

集合SのMexを算出するにはまず$O(|S|)$かかる、今回の場合$|S|=N$なので愚直にやると$O(NM)$かかってしまう、だから前回の計算結果を良い感じに利用するアルゴリズムを考えなきゃ…という思考になっていたのだがこれは間違いで、Mexを求める集合Sの方を実はかなり狭めることが出来る。

まず$|S|=N$である以上、Mexを求める上でN以上の数値を考慮する必要はない。0を下回る数値を考慮する必要もない。なので、$A_i$に足していって$[0, N)$の間に収まっているときだけ考慮すれば良い。第二に、各$A_i$は$i$ずつ増える。$[0,N)$に収まっている状態は$O(N/i)$回しかない。$\sum_1^N 1/i$の総和はよく知られているように$O(\log N)$である。以上を踏まえると、そもそもM回の操作を通して考慮すべき数値の状態数自体が$O(N\log N)$なのである。

これを踏まえればあとは愚直にMexを求めればよい。思いつけば簡単なのだが、思いつくのにだいぶ時間がかかってしまった。ちょっと頭をひねった計算量の見積もりみたいなやつがどうも苦手だ。

Categories: