Atcoder Regular Contest 116(ARC116) A-E 题解

A

n n n 含有 k k k 个质因子 2 2 2

①若 k ≥ 2 k \ge 2 k2 ,则偶因子多;
②若 k = 1 k=1 k=1 ,则两者相等;
③若 k = 0 k=0 k=0 ,则奇因子多。

B

我们将 a a a 从小到大排序,不难发现答案是
∑ i = 1 n ∑ j = i + 1 n 2 j − i − 1 a i a j + ∑ i = 1 n a i 2 \sum_{i=1}^n \sum_{j=i+1}^n 2^{j-i-1} a_i a_j + \sum_{i=1}^n a_i^2 i=1nj=i+1n2ji1aiaj+i=1nai2

对于前面的那一部分,分治计算就好了。

C

a m = x a_m=x am=x 的方案数为 f x f_x fx

我们将 x x x 质因数分解为 x = ∏ i = 1 t p i q i x=\prod_{i=1}^{t} p_i ^ {q_i} x=i=1tpiqi 的形式,不难发现
f x = ∏ i = 1 t ( n + q i − 1 q i ) f_x = \prod_{i=1}^t {{n+q_i-1} \choose {q_i}} fx=i=1t(qin+qi1)

筛出每一个 [ 1 , m ] [1,m] [1,m] 中的质数 p p p ,然后向所有含有至少一个质因子的 p p p 的数产生贡献,最后对于每一个 x x x 求出 f x f_x fx 即可。

时间复杂度 O ( m log ⁡ m ) O(m \log m) O(mlogm)

D

答案为
[ x m ] ∑ i = 0 log ⁡ 2 m ∑ j = 0 n ( n 2 j ) [ x 2 i × j ] [x^m] \sum_{i=0}^{\log_2 m} \sum_{j=0}^{n} {n \choose {2j}} [x^{2^i \times j}] [xm]i=0log2mj=0n(2jn)[x2i×j]

直接做是 O ( m 2 log ⁡ m ) O(m^2 \log m) O(m2logm) 的,可以采用 NTT 优化到 O ( m log ⁡ 2 m ) O(m \log^2 m) O(mlog2m) 或分治 NTT 优化到 O ( m log ⁡ m log ⁡ log ⁡ m ) ≈ O ( m log ⁡ m ) O(m \log m \log \log m) ≈ O(m \log m) O(mlogmloglogm)O(mlogm)

E

考虑二分答案。令当前二分的值为 m i d mid mid

为了方便叙述,令关键点分别为 k 1 , k 2 , ⋯   , k t k_1,k_2,\cdots,k_t k1,k2,,kt ,节点 i i i 的权值为 min ⁡ 1 ≤ j ≤ k d i s ( i , k j ) \min_{1 \le j \le k}dis(i,k_j) min1jkdis(i,kj) 。我们称一个点不合法,当且仅当该点的权值超过了 m i d mid mid

考虑求出至少需多少个关键点才能使得所有点权不超过 m i d mid mid

考虑贪心地去选择关键点。我们在树上做深搜,在回溯时做一个判断——若 i i i子树内所有不合法点最大距离 m i d mid mid ,则在 i i i 上放一个关键点。

现在,关键在于求出,点 i i i 到子树内所有不合法点的最大距离。注意到这是一个单点修改,子树查询的问题,我们可以采用dfs序+线段树来维护。

但是这样的复杂度会多一个 log ⁡ \log log,我们并不满意。考虑通过递推来代替线段树维护这个值。

f i f_i fi 表示点 i i i 到子树内所有关键点最小距离。回溯的时候:

①若 f i ≥ m i d f_i \ge mid fimid ,则点 i i i 本身不合法,所以 g i : = max ⁡ ( g i , 0 ) g_i := \max(g_i,0) gi:=max(gi,0)
②若 f i + g i ≤ m i d f_i + g_i \le mid fi+gimid ,则点 i i i 的子树中所有点均合法,所以 g i : = − ∞ g_i := -∞ gi:=
③若 g i = m i d g_i = mid gi=mid ,就在点 i i i 上摆一个关键点,令 f i = 0 f_i=0 fi=0 g i = − ∞ g_i = -∞ gi=

这里 g i = − ∞ g_i=-∞ gi= 表示在 i i i 的子树中不存在不合法点。

注意,最终还要判断一下 g r o o t g_{root} groot 是否为 − ∞ -∞ ,如果不是的话,关键点的数量还要加一。若最终关键点的数量不超过 m i d mid mid ,则答案一定不大于 mid \text{mid} mid ,反之同理。

总时间复杂度 O ( n log ⁡ n ) O(n \log n) O(nlogn)

F

咕咕咕

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值