题解:[[2024.10.7 模拟赛]] ## 我是 A 题 #容斥 #三维偏序 #排序 给定 $A,B,C$,有一些不重复三元组 $(a,b,c)$ 满足 $a\in [1,A],b\in[1,B],c\in[1,C]$。定义三元组 $(a,b,c)$ 不大于 $(u,v,w)$ 当且仅当 $a\le u,b\le v,c\le w$。有 $n$ 次操作,每次给出三元组 $(u,v,w)$,将现存三元组当中不大于 $(u,v,w)$ 的删除。输入方式如下: $ \begin{aligned} & \textbf{function }Rand(\textbf{arg: }k1(\text{reference}),k2(\text{reference})): \\ & ~~~~\textbf{var }k3\gets k1,k4\gets k2 \\ & ~~~~k1\gets k4 \\ & ~~~~k3\gets k3\oplus(k3\operatorname{\textbf{shl}}23) \\ & ~~~~k2\gets k3\oplus k4\oplus(k3\operatorname{\textbf{shr}}17)\oplus(k4\operatorname{\textbf{shr}}26) \\ & ~~~~\textbf{return }k2+k4\\ & \\ & \textbf{procedure }GetData(\textbf{none}): \\ & ~~~~\textbf{var }x,y \\ & ~~~~\textbf{read } n,A,B,C,x,y \\ & ~~~~\textbf{for }\textbf{var }i\in[1,n]:\\ & ~~~~~~~~u_i\gets Rand(x,y)\bmod A+1 \\ & ~~~~~~~~v_i\gets Rand(x,y)\bmod B+1 \\ & ~~~~~~~~w_i\gets Rand(x,y)\bmod C+1 \\ & ~~~~~~~~u_i\gets A\textbf{ if }Rand(x,y)\equiv0\pmod 3 \\ & ~~~~~~~~v_i\gets B\textbf{ if }Rand(x,y)\equiv0\pmod 3 \\ & ~~~~~~~~w_i\gets C\textbf{ if }u_i\ne A\textbf{ and }v_i\ne B\\ \end{aligned} $ ## 我是 B 题 #概率dp #概率与期望 有 $n$ 个质量分别为 $1\sim n$ 的物品需要经过 $n$ 道质检工序。 每一轮工序会收到上一轮传过来的所有物品并开始质检,第 $i$ 道工序流程如下: - 如果此时该道工序处只剩下一个物品,那么机器会将其粉碎。 - 如果此时该道工序处剩下了不止一个物品,那么机器会将质量最小的物品挑出来,以 $p_i$ 的概率将其粉碎,$1-p_i$ 的概率放过它并将其传给下一道工序。如果 机器放过了本次选择的物品,那么重新执行该流程直到粉碎某一个物品。 求最后剩下的物品质量的期望,答案对 $10^9+7$ 取模。 ## 我是 C 题 #递归 #分治 有长度为 $n$ 的整数数列 $a,b$,需要求出最大的 $k$,满足序列 $a$ 当中存在区间 $[i,i+k-1]$,使得区间内出现过的所有数出现次数都不小于 $b_k$。 ## 我是 D 题 #线段树 若有一个长度为 $n$ 的数列 $a$ 满足 $\forall a_i \in[1,m]$,定义 $f(a)$ 为数列中所有极长相等子段长度的平方和。 现在给出长度为 $n$ 的数列 $b$,满足 $\forall b_i\in [0, m]$,$b_i=0$ 表示 $b_i$ 的取值在 $[1,m]$ 中均匀随机。 有 $q$ 次操作,每次修改数列 $b$ 中的一个值,或者询问 $f(b_l\sim b_r)$ 的期望对 $998244353$ 取模后的结果。