20200308模拟赛
T1.开屏雷击: Bitset Master O ( n m ) O(nm) O ( n m ) 暴力。 出题人开了时限 6 s 6s 6 s ,然后心机的让 m = 3 n m = 3n m = 3 n , 奈何 O ( n m ) O(nm) O ( n m ) 跑过了 n = 30000 n = 30000 n = 3 0 0 0 0 的点。 O ( n m w + n 2 ) O(\frac {nm}w + n^2) O ( w n m + n 2 ) 算法: 每次合并的时候同时维护一个 u u u 被多少个节点 v v v 包含。 合并可以用 b i t s e t bitset b i t s e t 优化成 O ( n m w ) O(\frac {nm}w) O ( w n m ) , 合并 u , v u,v u , v 时可以考虑求出 S ( u ) x o r S ( v ) S(u) xor S(v) S ( u ) x o r S ( v ) 也就是集合中不同的点,然后对这些点维护一个 u u u 被多少个节点 v v v 包含,总共只会维护 O ( n 2 ) O(n^2) O ( n 2 ) 次。 O ( m ) O(m) O ( m ) 的解决先做完所有修改再询问的数据点的算法: 详见 O ( ( n + m ) log 2 n ) O(