摘要:
题面传送门 CCPC也出水题。 我们考虑这种东西怎么做,首先肯定枚举lca,然后变成了统计一个点在子树内的点对的两两lca是当前节点的权值异或和。 如果这个是方案数那么就很好做我们直接dsu on tree统计一下即可。但是这个异或让我们很不好做。 对于这种东西我们考虑拆位。 然后对于每一位分别计算 阅读全文
摘要:
题面传送门 这个东西一眼先把$gcd$提出来然后对于每个gcd只算权值为gcd倍数的答案。 然后这个东西简单容斥一下就是我们要的恰好为当前值的答案。 但是这个生成树权值和怎么做呢,矩阵树定理只能处理生成树权值积。 我们考虑魔改,如果我们将生成树权值积看成$n-1$个一次多项式相乘,然后取一次项,根据 阅读全文
摘要:
题面传送门 很奇怪为什么这么水的题目能到黑题。 因为它有一条$1$到$n$且必须经过$k$的路径,所以我们考虑状压dp出路径条数然后再矩阵树定理。 设$dp_{i,j}$为已经经过了$i$集合的点,且最后一个点为$j$的方案数,这个东西是平凡的$O(2nn2)$ 然后对于每个$dp_{i,n}$,我 阅读全文
摘要:
这种选$k$条的东西一般就是wqs二分。 这道题目显然有凸性,然后就可以二分斜率了。 但是这个输出方案很难搞,按照wqs二分分的方案只有90分因为有斜率相同。 我们考虑对每个点维护两个值$L$和$R$表示最小和最大能选的段数。 这个东西dp的时候稍微处理一下就好了。 然后我们对于每一个点$i$,如果 阅读全文
摘要:
这个东西正着不太好做我们考虑二分转化成判定性问题。 然后问题就变成:每个物品有一个重量和一个容量,要选取最多的物品且选取一个物品时已经选的物品重量总和不能超过当前物品容积。 这个东西可以反悔贪心,具体地,我们维护一个堆,并将$B$排序,然后得到一个物品时先判断能不能直接放进去,然后看能不能将最大的替 阅读全文
摘要:
首先这道题你发现所有异或和不变所以当异或和为$0$时一定平局。 当异或和不为$0$时我们只要考虑最高位即可。 具体的,我们将拥有这个最高位的置为$1$,没有的置为$0$,然后就变成了如何让先手取到$1$的个数为奇数。 这个东西写个dp就可以$O(n^2)$了。 然后把dp打表输出规律就可以$O(n) 阅读全文
摘要:
那个bitset做法是真的屑所以我们考虑更优秀的做法。 考虑分治。 对于一个轴分治,对于两个点在分治线两边的就一定会经过中轴线,我们只要预处理出每个点到中轴线上每个点的连通性然后看看是否在中轴线上有一个点两点均可达。 然后分治下去即可,时间复杂度$O(\frac{n^3logn})$,但是并没有代码 阅读全文