闲话 - 20230828
做DP题与计数的时候偶然想起自己出的一些MO题:
我在ABC237(2022-01-30)中遇到了这道题:
求长为 \(n\),值域 \([1,m]\),LIS 长为 \(3\) 的整数列数目。\(n\le 1000,m\le 10\)。
这道题是一个 DP of DP 的入门题。
一个月后,MO组自主命题,我从中获得灵感,出了这样一道题:
求长为 \(n\),值域 \({1,2,3}\),且包含子序列 \((1,2,3)\) 的整数列数目。
MO题当然就不会有 \(n\) 的范围了。
得到这个灵感时,只有 2 小时就要用题了。我马上开始做它。
做法留作练习时间有点久了,做法不在身边,什么时候拿到了补一个。答案的式子有一点点长。
我的思路是找到下标字典序最小的 \((1,2,3)\),然后列出一个求和式,用递推法处理。
这道题被放到黑板上。一个小时后,我先上去讲了自己的做法,然后大家开始各显神通。大概写了有四五个做法吧,印象比较深的有一个反面考虑的做法,不需要求和。
这道题是我自认为出的最好的MO题,原因就是它获得了很多不同的做法。
另一道我认为出的比较不错的题,灵感来自CF,是CF1680E:
在 \(2 \times n\) 的矩阵中给定若干个点,求包含这些点的最小连通块大小。\(n\le 2\times 10^5\)。
这题是一个蛮容易的 DP。
我的改编如下:
在 \(2\times 11\) 的矩阵中,求包含 \((1,5),(2,7)\) 的连通块数目。
这题首先要枚举第 \(5,6,7\) 列的选择情况,然后往两边递推,有一点点复杂。答案是 \(30208\)。
我认为这道题好的原因在于它综合了加法原理,乘法原理,枚举法,递推法,对应原理,虽然有些很简单,但基本囊括了常见计数题的一切套路。
这道题在预赛自主命题中用上了,好像没有人做出来。这大概是唯一美中不足之处。
若说再有什么出的好的题了,那就要看向几何了。但现在MO已经看不上传统几何了。
怎么还在摸鱼?写题去!