2022/4/18(月)

#Rustなにもわからない のイベントに参加登録していたのに思いっきりすっぽかしてしまった。ちくしょう…

TwitterのTLを見るだけ見ておいた。Actixがちょうすごいといった話を主にしていたようだ。くそう、面白そうだ…

なんか小手先の技術的な話題とかピンポイントなキーワードみたいなのはTLで流れてくるので割と捕捉できないこともなさそうなのだが、登壇した人たちは何に重きを置いていてどういう気持ちで日ごろそれを認識してやっているのか、みたいなのは流れや語調も含めて見聞きしていないとさすがにそうそう伝わってこないものだろうと思うのだよな。あー悔しい。


OpenGLで文字描画処理を実装した。

OpenGL→画像描画モジュール→文字描画モジュール といった感じで出来ている。やっぱり途中の部分を適切に抽象化して扱いやすくするのは重要。

フォントデータは美咲フォントを利用した。公式でpng形式のフォントアトラス的なものを配布しているので、テクスチャ画像に直す手間がない。各文字画像は区点コード形式で並んでいるので、ShiftJISから区点コードを割り出すコードを書いた。やってみると意外と難しいものではないな。あまり深入りしたいとは思わないが、こういう処理を一度書いてみると「文字集合」「文字コード」「バイト列」の違いをかなり明確に感じることができる。とてもいい経験になった。


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

019 Pick Two: ちょっと悩んだが、区間[L, R]の全通りに関して走査していくDPを思いついて実装できた。$[L1,R1]\subset [L2,R2]$ならば$[L2,R2]$は$[L1,R1]$より後に走査する、というルールが成り立つように走査していけば、任意の区間の計算においてより内側の区間に関する全ての情報を利用できる。

解説を読んだところ、こういうDPは区間DPという名前がついている典型らしい。なるほどなあ。名前を付けて認識するの大事。今度から数列や文字列を扱う問題で$O(N^2)$や$O(N^3)$が通りそうな問題を見たら区間DPを疑ってみよう。

実装中、配るDPにしようか集めるDPにしようかふわっとしたまま実装してバグらせた。こういうところ良くないな。

020 Log Inequality: 問題の式を2の肩に乗せれば$a<2^b c$になるのでそのまま実装してAC。$9\times 10^18$というやや見慣れない大きな制約なのでオーバーフローにだけ気を付けた。

何を学ばせる問題なのか良く分からず、オーバーフローについて学ぶ問題なのかと思ったが、解説を見ると「整数に直す」を主眼にした問題だったらしい。そこは息をするようにやってたから気づかなかった。

021 Come Back in One Piece: 強連結成分分解したら各強連結成分についてnC2をとって全部足せば終わり。SCCは今まで概念としては知っていたものの、使ったことはなかったのでいい勉強になった。ライブラリ化した。

022 Cubic Cake: gcdで割って終わり。gcdがMSVCで使えないと思ってるE8くんかわいい(それとも自分が知らないだけでstd::gcd()と__gcd()とやらに何か違いが…?)


今日摂取したコンテンツ。

https://ascii.jp/elem/000/004/089/4089448/

WindowsのアレACLって名前でしかもWindows固有じゃなかったのか。

各ファイルが各プリンシパルに対する許可操作のリストを持っている、って字面だけ考えればそこまで複雑なものでも無いような?動作速度とかどうなんだっていうのは感じるけど。

https://qiita.com/bell_007/items/8d8ec8d35722b4f50dc0

面白い概念を知った。

https://www.cc.u-tokyo.ac.jp/public/VOL9/special/9.pdf

こんなGoみたいな手軽さでCで並列処理が…?

Categories: