2021山威寒假培训收官检验赛题解
L1-4
打表找规律发现答案是 \(\left\lfloor\ \sqrt n\right\rfloor\)
证明: 一个数的约数一定是成对出现的, 故当一个数是完全平方数的时候,它的约数个数是奇数。 所以只要求出 \(1\) ~ \(n\) 中完全平方数的个数即可, 那么答案就是 \(\left\lfloor\ \sqrt n\right\rfloor\).
L1-8
通过前十五项 \(1,2,3,4,5,6,7,8,9,10,11,12,21,22,23\)
发现\(10,11,12\)是由第一项通过 \(1 * 10 + 1 - 1, 1 * 10 + 1 , 1 * 10 + 1 + 1\) 得到的
同理\(21,22,23\)是由第二项按照上述方式构造的
我们可以用前面的项按照上述的构造方式按顺序构造新的项:
假设当前项为 \(x\), 它的最低位为 \(y\), 那么构造出来的新的项分别为 \(x * 10 + y - 1\), \(x * 10 + y\), \(x * 10 + y + 1\)
注:最低位 \(y\) 为 \(0\) 或 \(9\) 时要特判边界
L2-2
假设 \(n = 3\) , \(3\) 个数分别是 \(a, b, c\)
\(\sum_{i=1}^3\sum_{j = i}^3 = (\dfrac{a}{1} + \dfrac{b}{2} + \dfrac{c}{3}) + (\dfrac{b}{2} + \dfrac{c}{3}) + (\dfrac{c}{3}) = a + b + c\)
故任何顺序的答案都是\(a + b + c\), 只要判断所有元素的和是否与 \(m\) 相等即可
L2-3
L3-1
对每个人维护一个贡献 \(f_i\)
这个值包括他自身的码力值 \(w_i\) 和 他所在每一对关系的 \(z_i\)
维护一个全局答案 \(ans\)
对于每一对关系,先将 \(ans\) 减去所有的 \(z_i\), 表示一个人都不选
若某对关系中一个人都没有选, 等价于 \(ans\) 减去了一个 \(z_i\), 即该关系需要额外减少的值
若选择了一对关系中的一个人, 等价于 \(ans\) 减去了一个 \(z_i\), 又加上了一个\(z_i\), 相互抵消
若选择了一对关系中的两个人, 等价于 \(ans\) 减去了一个 \(z_i\), 又加上了两个\(z_i\),即该关系需要额外增加的值
为了使得 \(ans\) 最大, 按照上述构造方式,我们只要贪心的选择 \(f_i > 0\) 的人即可
L3-2
可以相互交换的两个元素可以合并到同一个集合内, 用并查集把整个区间划分为多个集合
在每个集合内部, 求一下可以匹配的最大数量
具体操作可以对每个集合维护一个 \(map\), 对于当前位置, \(source_i\)的贡献 \(+1\), \(target_i\)的贡献 \(-1\) ,如果可以匹配上,则相互抵消
最终正数贡献的和即为答案

浙公网安备 33010602011771号