首页 > 其他分享 >ABC321

ABC321

时间:2023-09-24 10:01:46浏览次数:26  
标签:结点 le log 复杂度 儿子 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)\)。

标签:结点,le,log,复杂度,儿子,ABC321,答案
From: https://www.cnblogs.com/hzx-qwq/p/17725633.html

相关文章

  • AT_abc321_f [ABC321F] #(subset sum = K) with Add and Erase 题解
    AT_abc321_f[ABC321F]#(subsetsum=K)withAddandErase题解题目大意现在有一个空箱子。给你两个数\(Q,K\),然后给你\(Q\)行,每一行代表一个操作:\(+x\),即向箱子里加一个权值为\(x\)的小球。\(-x\),即从箱子里把权值为\(x\)的小球拿一个出来。保证合法,即箱子......
  • solution-at-abc321-c
    题意将所有每位满足递减的整数排序,问第\(k\)大的是多少,不包括\(0\)。思路我们发现最大的满足要求的整数是\(9876543210\),只有\(1e10\)的大小,\(k\)只有不到\(3000\)的大小,可以从小到大枚举所有的数,从T1粘来判断函数打一个表就解决了。打表程序#include<iostream......