2022.8.17 闲话

不可爱的人生没有意义ww

——expect2004

一言?


怎么没人投稿歌词呢?

《モザイクロール》

とある言叶が君に突き刺さり
to a ru ko to ba ga ki mi ni tsu ki sa sa ri
某句言语 刺穿了你
伤口から漏れ出す液を「爱」と形容してみた
ki zu gu chi ka ra mo re da su e ki o a i to ke i you shi te mi ta
自伤口渗出的液体 将之形容为「爱」

思いやりの欠如と形だけの交尾は
o mo i ya ri no ke tsu jyo to ka ta chi da ke no kou bi wa
同理体谅的缺乏及仅限形式上的交媾
腐れ縁のキミとアタシによく似ている
ku ra re en no ki mi to a ta shi ni yo ku ni te i ru
腐败的孽缘 你与我这般相似
「それでも好き…。」とか(笑)
so re de mo su ki to ka
「即使如此还是喜欢・・・。」 之类的(笑)

爱したっていいじゃないか
a i shi ta tte ii ja na i ka
过去式的爱不也挺好
缚り 谁も 触れないよう
shi ba ri da re mo fu re na i you
束缚著 谁都 触碰不到似地
これも运命じゃないか
ko re mo un me i ja na i ka
这不也是命运吗
消える 消える とある爱世
ki e ru ki e ru to a ru a i se
消失 消失 在某个爱的世界

终わる顷には君に饱いてるよ
o wa ru ko ro ni wa ki mi ni a i te ru yo
结束的时刻 对你已经厌倦透顶了喔
爱か欲か分からず放つことは何としようか
a i ka yo ku ka wa ka ra zu ha na tsu ko to wa na ni to shi you ka
分不清爱和欲望 放的东西该如何是好

思いやりの欠如と形だけの交尾は
o mo i ya ri no ke tsu jyo to ka ta chi da ke no kou bi wa
同理体谅的缺乏 及仅限形式上的交媾
腐れ縁のキミとアタシによく似ている
ku ra re en no ki mi to a ta shi ni yo ku ni te i ru
腐败的孽缘 你与我这般相似
それでもいいから…。
so re de mo ii ka ra
即使如此也罢

爱したっていうのですか?
a i shi ta tte iu no de su ka
能够说是爱过吗?
しがみついて藻掻くことを
shi ga mi tsu i te mo ga ku ko to o
紧抓不放 痛苦挣扎的事
杀したっていいじゃないか
ko ro shi ta tte ii ja na i ka
杀了有什麼不好
キミが嫌うアタシなんて
ki mi ga ki ra u a ta shi nan te
讨厌你 我呀

爱したっていいじゃないか
a i shi ta tte ii ja na i ka
过去式的爱不也挺好
缚り 谁も 触れないよう
shi ba ri da re mo fu re na i you
束缚著 谁都 触碰不到似地
これも运命じゃないか
ko re mo un me i ja na i ka
这不也是命运吗
消える 消える とある爱世
ki e ru ki e ru to a ru a i se
消失 消失 在某个爱的世界

以下序列均为整数序列 .


一维偏序(离散化)

给一个序列 \(\{a_n\}\),求 \(\displaystyle\sum_{i=1}^n\sum_{j=1}^n[a_j<a_i]\) .

应用高级算法——排序,可以得到 \(O(n\log n)\) 高效算法 .

发现 \(\{a\}\) 中元素均为整数,如果值域是 \(B\),则也可以基数排序得到 \(O(\log_{base}B\cdot n)\) 的算法,其中 \(base\) 是基排进制 .


二维偏序(逆序对)

给一个序列 \(\{a_n\}\),求满足 \((i<j)\)\(a_j<a_i\) 的二元组 \((i,j)\) 数量 .

两种算法:

  • 归并排序:本质是 CDQ 分治 .
  • 值域线段树 / 树状数组:需要先做一次一维偏序 .

以上都是很重要的,时间复杂度 \(O(n\log n)\) .


三维偏序

给两个序列 \(\{a_n\},\{b_n\}\),求满足 \((i<j)\)\(a_i<a_j\)\(b_i<b_j\) 的二元组 \((i,j)\) 数量 .

直接 CDQ 分治,时间复杂度 \(O(n\log^2 n)\) .

比 k-D Tree 是要快的 .


理论 \(k\) 维偏序

给一个有 \(n\) 个元素的序列,每个元素 \(p_i\) 是一个有序 \(k\) 元组 \((p_{i,1},p_{i,2},\cdots,p_{i,k})\) .

求满足 \(i<j\) 且对于所有 \(t\in[1,k]\)\(p_{i,k}<p_{j,k}\) 的二元组 \((i,j)\) 的个数 .

CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 \(\dots\) 套 CDQ .

或者 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 \(\dots\) 套 值域树状数组 .

或者 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 CDQ 套 \(\dots\) 套 树套树 .

时间复杂度达到优秀的 \(O(n\log^{k-1}n)\) .


半理论 \(k\) 维偏序

给一个有 \(n\) 个元素的序列,每个元素 \(p_i\) 是一个有序 \(k\) 元组 \((p_{i,1},p_{i,2},\cdots,p_{i,k})\) .

求满足 \(i<j\) 且对于所有 \(t\in[1,k]\)\(p_{i,k}<p_{j,k}\) 的二元组 \((i,j)\) 的个数 .

你的算法应该是不高于 \(O(n^2)\) 的 .

考虑 k-D Tree,先做一次一维偏序,每次统计“左上角”点即可,时间复杂度 \(O(n\cdot n^{1-\frac 1k})\) .

注意到这个魔幻算法:

  • \(k=1\) 时是 \(O(n)\) 的,于是我们得到一维偏序更优解法?不过是依赖值域罢了 .
  • \(k=\frac12\) 时是 \(O(1)\) 的 .
  • \(k=\frac13\) 时是 \(O(1/n)\) 的,\(n\) 越大跑得越快哦!

当然上面都是瞎扯,切勿当真 .

实践比 CDQ 快一些?


\(k\) 维偏序

给一个有 \(n\) 个元素的序列,每个元素 \(p_i\) 是一个有序 \(k\) 元组 \((p_{i,1},p_{i,2},\cdots,p_{i,k})\) .

求满足 \(i<j\) 且对于所有 \(t\in[1,k]\)\(p_{i,k}<p_{j,k}\) 的二元组 \((i,j)\) 的个数 .

\(n\le 40000\)\(k\le 6\),序列同一维度上每个元素构成一个排列 .

使用 word-RAM model 中的高级数据结构——Bitmap,写作 std :: bitset .

如果我们知道对于一个 \(k\) 维向量 \((p_1,p_2,\cdots,p_k)\),对于每一维 \(p_i\),比它小的数构成的集合是 \(S_i\),那么答案集合就是 \(S=S_1\cap S_2\cap\cdots\cap S_k\) .

这个直接 bitset 即可,我们设想如果我们知道第 \(k\) 维为 \(i\) 时,小于它的向量的编号集合,用一个长度为 \(n\)bitset 表示,查询的时候就直接返回这个 bitset 就好了嘛 .

然而这玩意空间 \(O(n^2k/w)\),就算带 \(\dfrac1w\) BUFF 还是不行 .

于是献祭高级数据结构——分块,因为是单独考虑每一维的集合的一个前缀,所以块尾储存关于大小的前缀集合就可以了,类似分段打表 .

分段打表大家都会吧?就不详细说了 .

然后空间就是 \(O(n^{1.5}k/w)\),这样就可以了 .

时间复杂度自然是 \(O(nk/w)\) 预处理,\(O(n^{1.5}k/w)\) 回答询问 .

不明白可以看 yyb 博客 里面的 FHR偏序 课件 .

顺便提一下这个可以支持强制在线 .


\(k\) 维偏序 (High)

给一个有 \(n\) 个元素的序列,每个元素 \(p_i\) 是一个有序 \(k\) 元组 \((p_{i,1},p_{i,2},\cdots,p_{i,k})\) .

求满足 \(i<j\) 且对于所有 \(t\in[1,k]\)\(p_{i,k}<p_{j,k}\) 的二元组 \((i,j)\) 的个数 .

\(n\le 2\times 10^2\)\(k\le 10^3\) .

使用高级算法——XIN 队算法,达到了高效的 \(O(n^2k)\) .

因为种种原因,解决前面问题的算法常数打不过 XIN 队 .

posted @ 2022-08-17 18:32  Jijidawang  阅读(71)  评论(2编辑  收藏  举报
😅​