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_n=f_{n-1}+(n-1)[(n-1)!+f_{n-1}], \]

最后求个平均,答案就是

\[\frac {f_n}{n!}. \]

把阶乘和 \(f\) 预处理一下再询问,时间是优越的 \(O(n+T)\)


  1. 同时每日有人因为不会除法逆元失去较多分数。 ↩︎

posted @ 2026-07-09 15:21  Sternenlicht12345  阅读(4)  评论(0)    收藏  举报