2022/7/17(日)

OpenXRでhapticsとReferenceSpaceを利用できた。これでOpenXRの基本的な機能は大体試し終わった。

hapticsは本当にxrApplyHapticFeedbackを使うだけなので特に難しい要素は無かった。

ReferenceSpaceはちょっと勘違いしていた部分があったのだが、使ってみたらそれほど難しくなかった。

XrSpaceというオブジェクトがある。これは文字通り空間=座標系を表すもので、OpenXRで何かの位置を取得するには大概これを指定することになる。そしてもう一つ重要なこととして、「何かの位置」そのものを表すためにも使われる。例えばコントローラ位置もXrSpaceで表され、これをカメラのローカル座標系にxrLocateSpaceで変換することでカメラから見たコントローラ座標が取得できる。ここが最初飲み込めていなかった。

xrCreateReferenceSpaceという関数でXrSpaceオブジェクトを作成する。この時にReferenceSpaceTypeで種類を指定する。カメラ座標系ならXR_REFERENCE_SPACE_TYPE_LOCALを指定する。VR空間における標準の立ち位置を基準にした座標系ならXR_REFERENCE_SPACE_TYPE_STAGEを指定する。正直この2つ以外要らないと思う。


ABC260に参加した。EもFも分からなかったがGをギリギリで通して黄パフォが出た。

A: やるだけ

B: 問題文通りに丁寧に実装すれば通る。合格した人の扱いをどう実装するかには色々やり方があると思う。listにして適宜取り除いていくのでもいいと思うが、自分はlistをあまり扱い慣れていないので(というか油断すると遅くなりそうでイヤなので)それぞれの人に合格フラグを持たせる実装にした。ソートがボトルネックになって$O(N\log N)$だが、$O(N^2)$でも通る。最大値を持って回るような感じの実装とかがあり得るのか?

C: dpしようと思ったが実装に手こずりそうなのでメモ化再帰にした。

D: 一番上のカードの集合をstd::setで管理し、N個のqueue(stackでも良かったか)を用意して対応する番号のところへカードを詰めた。1度に1つの山札しか食べないことに気付ければあとはシミュレーションするだけだけ。アルゴリズムというより保持するためのデータ構造を思いつくのが難しかった。

G: なんか変則的ないもす法というものがあるのは知っていたので上手く思いつけないかと思ったが思いつけなかったので、ダメ元で1クエリに$O(M)$かけるTLE解法を投げたら通った。前計算で各行について累積和をとれば、ある行のある区間にいくつあるかは$O(1)$でとれる。あるクエリで調べる必要が出る行の数は$min(N,M)$なので$O(M)$でとれる。全体$O(N^2+QM)$、完全にTLE解法なのだが定数倍が軽いので通ってしまった。

ちなみにGの競プロフレンズの解説がなかなか良かった。変則的ないもす法を機械的に考え付くための指針として分かりやすい。


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

https://anond.hatelabo.jp/20220715194323

宗教との結びつきってそういう必然性があるんだーというのが面白かった。じゃあどう制度設計すりゃいいのよという考察の視点でも興味深いが、自分にはそうパッと思いつくものではない。

なんかいい感じの別制度を思いついたとして、それにもやはり別の欠点が出てきそう。

以前に読んだやつなのだが、ツリーに続きが追加されていた。

なんかステレオタイプなイメージとして「現代の都会⇒機械的、システマチック、非人情的」みたいなのがあるけど、今の都会でもなんかあり得そうな感じのちょっとした人のやさしさみたいなのがなかなか良かった。

些細なことで「いつもの日常」から急に弾き出される心細さの表現がすごい。主人公がくたびれたサラリーマンなのも含めて、現代の小話としてよくできている。

Categories: