2023/5/14(日)

ARC160に出た。

A: 辞書式順序なので、定石としてとりあえず前から決めていく。前からi要素を固定したときにそのような数列が何通りありうるかというのを計算できれば、小さい値から順に試すことで「前からi要素がこれであるような数列は〇位から〇位の領域である」というのが分かるので先頭から順番に決めていくことができる。

以下、操作後の順列を$B$とする。

まず$B_1$を決めることを考える。$B_1$が操作前の$A_1$でない場合、$A_1$以外のどこかから1番目の位置に持ってくる必要があるので、そのような$B$を生成する$(L,R)$の組は$B_1$に対応して一意に定まる。ここで引っかかればもう確定してしまってよい。

一方$B_1=A_1$の場合、1番目の要素に触れないように(L,R)を取ればなんでもいいので、$N+ _{n-1}C_2$通りがありうる。ここの領域のどこかに答えがあるという場合、$B_2$を決める必要がある。

このような形で順にBの値を決めていくことができる。i要素目を決める場合、$B_i\neq A_i$ならばパターン数は1通り。$B_i=A_i$ならばパターン数は$N+ _{n-i}C_2$通り。


ボイスチャットアプリの自作を進めた。デバイス間の差異を吸収するためにリサンプリング処理を入れようとしている。libsamplerateという神みたいなライブラリがあったためありがたく使わせてもらっているのだが、どうもストリーミングでやろうとすると上手く行かない。まとまったオーディオファイルを変換する限りは上手く動くのだが。

Categories: