1 条题解
-
0
Doremy 的钉子游戏题解
思路
设 。按橡皮筋第一次被中心钉子挡住时两侧仍保留的端点分类,可以把一个合法数组唯一分解为:选择旋转起点、选择跨过中心的方向与宽度、选择若干可自由穿插的钉子,再排列已经移除的钉子。
固定分类参数 后,方向与宽度共有 种;除偶数 的最后一种边界外,可自由选择的钉子数为 。若从中选择 个,贡献为组合数乘 。最后乘上 个旋转起点并求和。
小规模可以直接枚举子集与排列。中等规模可以按组合数定义逐项重算。满分做法预处理阶乘和逆阶乘,使每个组合数在常数时间求出。
做法
预处理 到 ,并利用 为质数且 ,通过费马小定理求逆阶乘。
枚举 从 到 。当 为奇数时跳过 。令
$$u=\begin{cases} 0,&i=n-1,\\ n-i-2,&\text{其他情况}. \end{cases}$$再枚举 ,把
加入答案并始终对 取模。
复杂度
时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1194
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者