noip模拟42

T1

简单的树形dp,记录套上log和取模后的最大值

f[i][0]表示i点不选,其子树的最大值,f[i][1]表示i点选上的最大值

转移方程

\[f[u][1]=w[u]*\prod_{v=son[u]}f[v][0] \]

\[f[u][0]=\prod_{v=son[u]}\max(f[v][0],f[v][1]) \]

T2

可以发现对于一个奇数p,与其相关的集合为\({p,2*p,2^2*p,\cdot\cdot\cdot,2^k*p}\)

集合里的每个元素,A,B都隔着选

所以对于每个集合,若集合大小为偶数,对答案贡献为2

若集合大小为奇数,可以从中任选一个元素为A,剩下的平分

所以最终A集合大小的范围在\([l,r]\)之间,所有比l大的贡献都是奇数大小集合产生的,组合数,卢卡斯

由于集合的元素最多log(n)个,且具有单调性,可以二分每个集合大小所管辖的奇数区间,复杂度\(O(q\log^2n)\)

其实不用二分,直接计算得出集合大小为i的奇数所在的区间为\([\frac{n}{2^i}+1,\frac{n}{2^{i-1}}]\)\(O(q\log n)\)

noip模拟42

上一篇:Android 多线程断点下载


下一篇:IDEA - 解决lombok无法获取get、set方法报错问题