2026 NOIP 模拟赛 4 差点保龄寄
\(\gdef\red{\colorbox{FE4C61}{\color{#fff}\text{Red}}}\) \(\gdef\orange{\colorbox{F39C11}{\color{#fff}\text{Orange}}}\) \(\gdef\yellow{\colorbox{FFC116}{\color{#000}\text{Yellow}}}\) \(\gdef\green{\colorbox{52C41A}{\color{#fff}\text{Green}}}\) \(\gdef\cyan{\colorbox{13C2C2}{\color{#fff}\text{Cyan}}}\) \(\gdef\blue{\colorbox{3498DB}{\color{#fff}\text{Blue}}}\) \(\gdef\purple{\colorbox{9D3DCF}{\color{#fff}\text{Purple}}}\) \(\gdef\black{\colorbox{0E1D69}{\color{#fff}\text{Black}}}\) \(\gdef\gray{\colorbox{BFBFBF}{\color{#000}\text{Unknown}}}\)河溢危,禾已萎,鹤依偎。禾异味,鹤已畏,合一,谓何?"异味?"何矣,味何?以萎。何异胃颌已危,何医为?河易为河医。为何?医喂荷以维何一胃。何已维。"颌医未。"何矣,胃颌易维,合一位,荷医为颌,医危颌,"已伟!"何意为贺医位。
赛时历程
T1 是个 DP,推不出来看 T2 有思路直接写,然后成功被 hack 了。侥幸认为数据应该比较水,说不定能拿个几分,但大概率保龄,回去功课 T1,推出了这么个柿子:
设 \(f_n\) 为长度为 \(n\) 的所有排列排序所需最少交换次数(不一定相邻交换!),则
\[f_n = \sum_{i=1}^{n-1}(-1)^{i-1}f_{n-i}\binom ni. \]
后发现是错的,懒得改了,其他暴力不会,保龄遗憾离场。
| 编号 | 赛时估分 | 赛后出分 |
|---|---|---|
| A | \(0\) | \(0\) |
| B | \(0\) | \(20\) |
| C | \(0\) | \(0\) |
| D | \(0\) | \(0\) |
| E | \(0\) | \(0\) |
赛后改题 & 总结
A. 冒泡排序(sort)
题目大意
考虑以下函数
procedure sort(array a[1..n]) {a 随机生成}
var
p1,p2: integer;
begin
while a 无序 then
begin
p1 = randint(1..n);
p2 = randint(1..n);
swap(p1,p2); {Bookmark!}
end;
end.
用这个函数将所有长 \(n\) 的序列 \(p\) 都排一次序,如果足够幸运,Bookmark! 处执行次数尽可能少,平均每次排序 Bookmark! 处会执行多少次?答案每日对 \(998~244~353\) 驱魔[1]。共 \(T\) 次询问,\(1\le T\le 10^5, 1\le n\le 10^7\)。
思路
在 \(1\sim n-1\) 的基础上插入新数 \(n\)。此时 \(n\) 可以放在 \(n\) 个位置上。
若 \(n\) 在最后,啥也不用干,次数 \(f_{n-1}\);若 \(n\) 在前面,首先一步把他丢到最后头去,这里每个排列都要增加一次操作,然后是前面 \(n-1\) 个数随便换,也即 \((n-1)!+f_{n-1}\),别忘了 \(n\) 一共 \(i-1\) 个位置可以放,故
最后求个平均,答案就是
把阶乘和 \(f\) 预处理一下再询问,时间是优越的 \(O(n+T)\)。
同时每日有人因为不会除法逆元失去较多分数。 ↩︎

浙公网安备 33010602011771号