AtCoder 杂题集

AtCoder 有许多有趣的思维题, 特此记录.

AGC 044 A

题目链接

题意

要把起始为 0 的数变成 N, 可以乘 2, 3, 5 或加减 1, 它们有各自的代价ABCD. 问最小代价. \(N ≤ 1e18, A,B,C,D ≤ 1e9\).

题解 把整个过程反过来考虑. 注意到在除法前进行 +1/-1 是不会超过235的整数倍的. 例如, 当前为 31, 那么一定不会加减超过 30 或 32 再除以 2. 这意味着当前为 N 时, 以每次进行除法为划分, 下一次只会转移到 $\lfloor \frac{N}{k} \rfloor 和 \lceil \frac{N}{k} \rceil , k=2,3,5$. 进行记忆化搜索就可以解决问题.

我们还要知道会到达多少种状态. 考虑每次除以 2, 3, 5次数一样的情况, 无论向上还是向下取整, 它们的取值至多差 1. 再计算一下\(log_{2}{1e18}\approx 60, log_{3}{1e18}\approx 40 , log_{5}{1e18}\approx 30\). 所以可能到达的状态至多有 \(2*60*40*30\approx 1.5e5\) 种. 这还只是一个粗略的上限, 因为这包含了部分乘积大于 1e18 的情况.

我的代码写得很搓, 这里推荐一波杜老师的代码.

AGC 043 B

题目链接

题意

N × N 的上三角型矩阵, 给出第一行的元素, 并且取值都在\([1, 3]\). 其他元素满足\(a_{i,j}=|a_{i-1,j}-a_{i-1,j+1}|\). 问\(a_{N,1}\)的值. \(N ≤ 1e6\).

题解 显然第一行的数都 -1 后不影响答案. 此时所有元素的取值范围都是$[0,2]$. 如果推导式中没有取绝对值的话, 可以直接套二项式系数.

在取绝对值意义下, 奇偶性是不会改变的, 所以我们可以套二项式系数算出\(a_{N,1}\)的奇偶. 如果是奇数, 结果就是 1. 如果是偶数, 需要考虑结果是 0 还是 2. 如果第一行的元素中有 1, 那么结果一定不会是 2. 如果没有 1, 那么对整个矩阵除以 2, 对新矩阵再套一次二项式系数, 最后结果乘以 2 即可.

猜你喜欢

转载自www.cnblogs.com/hs-zlq/p/12950497.html