省选模拟41
A. 要换换名字
要求匹配的问题应该可以很自然的想到二分答案+网络流。
然而发现子序列的个数非常多,如果全建出来复杂度会死。
然后可以发现,某个串的多于$n$个的子序列是没有意义的,所以每个串只找出来$n$个子序列即可。
B. 动态半平面交
和曾经考过的一道题很像,然而那个题当时使用线段树合并过的,因为并没有强制在线。
将每个质因子的若干次幂当成一种点,每种点有一个权值,那么一个点的答案就是范围内所有出现过的种类的权值的乘积。
所以这个东西可以用树链的并来维护,也就是在dfs序相邻节点的lca处进行容斥。
所以只要将$p^k$看成是k种点,每种点的权值都是$p$,那么就可以简单的维护。
C. 获取名额
不难发现最终要求的是这个东西:$1-\prod_{i=l}^r(1-a_i/x)$
发现在$a/x$较大的时候,这个东西会迅速收敛,只需要较少的迭代次数就可以达到精度要求。
在$a/x$较小的时候,并不能迅速收敛,但是可以发现这个东西对精度的影响不大,所以可以考虑取ln之后暴力泰勒展开取前几项系数,可以发现这个系数种$a$被独立出来了,所以可以单独处理。
所以现在的问题是,找到所有$a/x$很大的点,这个东西分治一下就可以了,由于期望找到$log$个就会满足精度要求,而找到一个的复杂度是$log$,所以总的复杂度就是$log^2$。