2022/7/13(水)

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

ABC259-E: ある数値集合のLCMは、その各数値の素因数の指数についてmaxをとったものと考えることができる。

$a_1…a_N$のLCMの値があるとして、ある$a_i$が1に変化したときにLCMの値が変化するのは、$a_i$の素因数の中でその指数が最大かつ唯一であるものがあったときだけ。最大でなければ取り除いてもmaxは変化しないし、唯一でない場合でもmaxは変化しない。この条件を満たしているならばLCMのバリエーションが1つ増える。初期値を1として数えていけばよい。

このアルゴリズムでLCMのバリエーションを数えると、答えが$N+1$になってしまう場合がある。どの$a_i$を1にした場合でもLCMの値が最初から変わってしまう場合である。その時は答えを$N$にすればよい。


OpenXR×Vulkanでテクスチャの表示に成功した。今日の分の進捗はまあVulkan部分といった感じ。

DescriptorSet,DescriptorSetLayoutなどをどう保持しようか迷った。Vulkanアプリケーション全体の管理クラス、描画対象的なもの(スワップチェーンなど)を管理するクラスがあり、後者には描画方法的なもの(パイプラインなど)も一緒に詰めてある。分離したいのだが手が回っていない。

最終的に描画対象・描画方法的なものを詰めている側のクラスでDescriptorSetLayoutを生成し、Vulkan全体の管理クラスの側でDescriptorPool, DescriptorSetなどを管理する設計にした。

明日はOpenXR側、Virtual Space周りの実装をする。手の位置とか表示したい。

ここんとこOpenXRをいじるのに没頭しすぎてて競プロのモチベが下がっている。


たまにはと思ってLablogを更新した。

https://foolslab.net/lablog/page45

Categories: