2021山威寒假培训收官检验赛题解

L1-4

打表找规律发现答案是 (leftlfloor sqrt n ight floor)
证明: 一个数的约数一定是成对出现的, 故当一个数是完全平方数的时候,它的约数个数是奇数。 所以只要求出 (1) ~ (n) 中完全平方数的个数即可, 那么答案就是 (leftlfloor sqrt n ight floor).

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}^3sum_{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) ,如果可以匹配上,则相互抵消
最终正数贡献的和即为答案

L3-3

原文地址:https://www.cnblogs.com/ooctober/p/14431620.html