2025/10/31 总结
求和
情况
- 时间:\(30min\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- 贪心
思路
这道题我们可以先把题目变为 \(\sum_{i=1}^{2n}\frac{i}{f(i)}-\sum_{i=1}^n\frac{i}{f(i)}\),所以我们可以每次加上除以 \(2^j\) 为奇数的数,所以 \(O(\log 2n)\) 处理即可。
取模 2
情况
- 时间:\(30min\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- \(\text{dfs}\)
思路
我们思考 \((x\bmod a)\bmod b\) 如果 \(a<b\) 那么就变为 \(x\bmod a\),所以当是最优方案时,肯定先模大的,再模小的。所以我们先把数组排序后,在枚举哪些数在 \(b\) 中即可,复杂度 \(O(2^n)\)。
整除 2
情况
- 时间:\(1h\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- \(\text{dp}\)
思路
这是一个比较板的 \(\text{dp}\),我们定义 \(dp_i\) 表示前 \(i\) 个数的答案最大为多少。所以 \(dp_i=dp_{i-1}\),我们再找到上一个位置 \(j\) 使得 \(a_{j+1}+a_{j+2}+\cdots+a_{i-1}+a_i\) 为 \(p\) 的倍数,所以 \(dp_i=\max(dp_i,dp_j+1)\)。
差异
情况
- 时间:\(2h\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- 滑动窗口,差分
思路
我们枚举 \(i\) 和 \(j\),\(i\) 为两个子串距离,\(j\) 为起始位置,所以只需要计算差分,然后计算原数组后,再计算前缀和即可。

浙公网安备 33010602011771号