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\) 这个答案就合法,这样就可以过了。

posted @ 2025-10-30 15:20  小熊涛涛  阅读(1)  评论(0)    收藏  举报