ABC321

前言

感觉自从没了 \(\tt{EX}\) 后整体难度降了不少

A

模拟即可

B

观察到 \(n\le 100\),枚举答案验证即可,时间复杂度 \(O(100 \times n \log n)\)

C

手算一下可以发现满足条件的数字只有 \(1022\) 个,直接 \(\tt{dfs}\) 出所有答案并存储,排序并输出第 \(k\) 小即可

D

易得求 \(\sum_{i=1}^{n} \sum_{j=1}^{m} \min(a_i + b_j,P)\)。

显然排序不影响答案,所以考虑对 \(a\) 和 \(b\) 排序后对 \(b\) 做前缀和并二分查找 \(b\) 中第一个大于等于 \(P-a_i\) 的数的位置,通过前缀和计算答案即可,时间复杂度 \(O(n \log m)\)。

E

发现建出来的树是一颗完全二叉树,考虑将答案分为两部分,即点自身的 \(k\) 儿子和与该点的父亲距离为 \(k\) 的点。

可是这两个部分存在交集,所以我们每次加上父亲结点的贡献时都要再减去点自身的 \(k-2\) 儿子。大眼观察得该完全二叉树的每一层的点都可以构成一个公差为 \(1\) 的等差数列,那么计算一个点的 \(d\) 儿子时(\(1 \le d \le k\)),可以找到 \(d\) 儿子中最左的结点 \(u\) 和最右的结点 \(v\),\(d\) 儿子的数量即为 \(v-u+1\)。

注意当 \(k\) 大于两倍树高时无解,因为树的直径不可能超过两倍树高。时间复杂度 \(O(n \log n \log n)\)。

F

可撤销背包板子,虽然我之前不知道有可撤销背包这么个东西

设 \(dp_i\) 为和为 \(i\) 的方案数,对于增加一个 \(x\),多出的方案数就是从 \(i-x\) 转移而来;对于减少一个 \(x\),\(i\) (\(x \le i\)) 在没有 \(x\) 之前的方案就是从 \(i-x\) 处没有使用的位置转移而来。

时间复杂度 \(O((k-x)^2)\)。

ABC321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值