2025/10/30 总结
重组字母
情况
- 时间:\(30min\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- 贪心
思路
我们直接从前到后枚举每个位置,看这个位置最小可以放什么,所以每次填上字母并减去字母的数量即可。
区间整除
情况
- 时间:\(30min\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- 线性筛
思路
我们可以将题目变为 \(\frac{\frac{d!}{(c-1)!}}{\frac{b!}{(a-1)!}}\) 为整数,所以 \(\frac{(a-1)!d!}{(c-1)!b!}\) 为整数,所以我们可以先用线性筛把所有的质数筛出来,然后看 \((a-1)!\) 和 \(d!\) 中的每个质数数量是否大于等于 \((c-1)!\) 和 \(b!\) 的数量,所以直接判断即可。
擦数游戏
情况
- 时间:\(2h\)
- 预期:\(40\)
- 实际:\(36\)
知识点
- 折半搜索
思路
我们将设两堆数它们的和之差一定为最小值,或者比最小值大。可以思考如果把两堆内的数互相减,总和更大的那个堆一定至少存在 \(1\) 个数且其他数没有运算,如果有数没有运算则一定不为最小值,否则可能为最小值,所以考试思路为给每一个数赋予一个权值 \(-1/0/1\) 这样结果的绝对值的最小值一定是最后的答案。然后考虑优化,很容易想到用折半搜索,这样复杂度较之前变小。但我们注意 \(n\le 30\) 的分数为 \(80\) 但 \(30<n\le10^5\) 的分数只有 \(20\) 所以这个答案一定有规律,思考一下如果 \(2^n>b\times\max(a_i)\) 答案一定为 \(0\),所以这样就很简单了。
逃离
情况
- 时间:\(1h\)
- 预期:\(100\)
- 实际:\(100\)
知识点
- 二分
思路
我们思考样例的 \(3\) 辆车,我们考虑它们最后至少要多少要到哪些位置,思考一下因为最后一个车要离开桥,所以 \(3\) 辆车的位置为 \([20,20],[20,23],[23,28]\),所以我们可以二分答案,我们计算当一辆车到规定范围并在 \(mid\) 时刻前,至少需要加上多少次 \(k\) 才能满足,所以只需要总次数小于等于 \(m\) 这个答案就合法,这样就可以过了。

浙公网安备 33010602011771号