模拟测试20191011

%%%$\Huge skyh \ rank1太巨了$

$T1:d$

可以发现最优决策一定是删x个a最小的,m-x个b最小的

那么我们先删m个a最小的,然后一个个把大的选上,同时删去当前y最小的就好了

复杂度$O(nlogn)$

 

$T2:e$

可以发现题中要求的联通块其实就是他们到公共lca的路径并

求abs可以很自然地想到求前驱后继,这个可以用主席树来维护

剩下的乱搞就好了,树剖或者树上主席树都行

复杂度$O(nlog^{2}n)$/$O(nlogn)$

 

$T3:f$

考虑每一位的贡献

显然两个数成为逆序对只与他们最高的不同位有关

预处理出来每一位$XOR \ 1$/$XOR \ 0$对逆序对的贡献

然后考虑怎么求出答案

显然排名随着$f(x)$单调递增

二分答案,考虑怎么$check$

利用$meet \ in \ middle$思想,把k位的数分成两个$\frac{k}{2}$位

将左边排序,每次扫描右边并在左边二分查找就好了

也可以用单调指针维护,能省去一个$log$

复杂度$O(nk+2^{\frac{k}{2}}log^{2})$/$O(nk+2^{\frac{k}{2}}log))$

posted @ 2019-10-11 15:38  mikufun♘  阅读(123)  评论(1编辑  收藏  举报