PKUSC 2023
不保证 Subtask 完全准确。题面与 \(100\%\) 数据范围大致准确。时间限制没说就是 1s。
D1T1
给定两个长度相同的字符串 \(S[1\cdots n],T[1\cdots n]\),你需要对每个 \(1\le i\le n\) 输出:
- 如果将 \(S_i\) 替换为 \(T_i\),得到的新字符串的 border 长度是多少。
一个字符串 \(S\) 的 border 长度定义为最大的 \(i\) 使得 \(1\le i<n\),且 \(S[1\cdots i]=S[n-i+1\cdots n]\)。
- Subtask #1(23pts):\(1\le |S|\le 50\)。
- Subtask #2(31pts):\(1\le |S|\le 5000\)。
- Subtask #3(37pts):\(1\le |S|\le 10^5\)。
- Subtask #4(9pts):\(1\le |S|\le 2\times 10^6\)。
D1T2
时间限制:4.5s
有 \(n\) 个人在玩狼人杀,其中第 \(m\) 个是狼人。在剩下的 \(n-1\) 个人中等概率随机一个人作为预言家,预言家每次会随机选择一个区间 \([l,r]\)(即每个区间 \(\frac{2}{n(n+1)}\) 的概率),他可以知道狼人是否在这个区间内。问期望意义下预言家期望多少步能确定谁是狼人。
具体来说,如果预言家是 \(i\),那么对他而言的初始“候选狼人集合”为 \([1,i)\cup (i,n]\),如果他询问了 \([l,r]\),此时若狼人在 \([l,r]\) 内,则候选狼人集合由 \(S\leftarrow S\cap [l,r]\);否则 \(S\leftarrow S\cap([1,n]-[l,r])\)。该预言家找到狼人的期望步数就是 \(|S|\) 第一次变成 \(1\) 的期望步数。对某个质数取模。
本题代码长度限制为 8KB。
- Subtask #1(23pts):\(2\le n\le 20,1\le m\le n\)。
- Subtask #2(34pts):\(2\le n\le 50,1\le m\le n\)。
- Subtask #3(43pts):\(2\le n\le 150,1\le m\le n\)。
D1T3
时间限制:3s
给定一棵 \(n\) 个结点的有根树,\(1\) 是树根。树上的每个点有初始点权 \(x_u\),而点 \(u\) 的实际点权 \(y_u\) 定义为他的初始点权和他所有儿子的实际点权的众数。保证每个点的儿子个数均为偶数。
现在已知点 \(u\) 的初始点权为 \(1\) 的概率为 \(\text{Pr}[x_u=1]=p_u\),问根节点实际点权为 \(1\) 的概率。
此外,你还需要维护 \(q\) 次修改,每次修改会给出 \(x,y\),并将 \(p_x\) 修改为 \(y\)。你需要在每次修改后输出根节点实际点权为 \(1\) 的概率。对 \(998244353\) 取模。
- Subtask #1(12pts):\(1\le n,q\le 100\)。
- Subtask #2(20pts):\(1\le n\le 2\times 10^5,1\le q\le 5\times 10^4\),且对每个 \(i\),点 \(2i\) 与 \(2i+1\) 的父亲相同,且都在 \([1,2i-1]\) 中等概率随机。
- Subtask #3(20pts):\(1\le n\le 2\times 10^5,1\le q\le 5\times 10^4\),每个点的儿子个数不超过 \(10\)。
- Subtask #4(23pts):\(1\le n\le 2\times 10^5,1\le q\le 5\times 10^4\),每个点的父亲均为 \(1\)。
- Subtask #5(25pts):\(1\le n\le 2\times 10^5,1\le q\le 5\times 10^4\)。
D2T1
你需要维护一个序列,初始为空。有 \(n\) 次操作:
1 x
:在序列中编号为 \(x\) 的人后面插入一个人,他的编号是当前序列中的人数 \(+1\)。若 \(x=0\) 则代表将此人插入到序列开头。2 i y
:如果插入编号为 \(i\) 个人的操作是1 x
,那么将其改为1 y
。该操作会同步影响后面的所有操作。3 z
:查询序列中编号为 \(z\) 的人是第几个。
Subtask #1(5pts):\(1\le n\le 500\)。
Subtask #2(20pts):\(1\le n\le 3\times 10^5\),且没有 \(2\) 操作。
Subtask #3(20pts):\(1\le n\le 3\times 10^5\),且 \(2\) 操作的数量不超过 \(200\)。
Subtask #4(20pts):\(1\le n\le 3\times 10^5\),所有操作在可能的操作中等概率随机生成。
Subtask #5(35pts):\(1\le n\le 3\times 10^5\)。
D2T2
一个角色有 \(L\) 个位置可以搭配圣遗物。你在第 \(i\) 个位置刷了 \(n_i\) 件圣遗物,它们的暴击率和暴击伤害分别是 \((a_{i,1},b_{i,1}),(a_{i,2},b_{i,2}),\cdots,(a_{i,n_i},b_{i,n_i})\)。
现在你需要回答 \(Q\) 次询问。每次询问会给出初始暴击率和暴击伤害 \(A,B\),你需要在每个位置选择一件圣遗物,设最终得到的圣遗物部分总暴击率为 \(a\),总暴击伤害为 \(b\),那么我们认为你的期望伤害是 \(D=(A+a)(B+b)\)。
你需要给出一种方案,使得 \(D\) 的值与理论上 \(D\) 的最大值的差不超过 \(2500\)。
有 \(T\) 组数据。
对于 \(100\%\) 的数据,\(1\le \sum L\le 50000,1\le a_{i,j},b_{i,j}\le 100,n_i\le 10,Q\le 10,1\le A,B\le 10^7\)。
其中 \(a_{i,j},b_{i,j}\) 可以是浮点数,但小数点后不超过两位。
- Subtask #1(15pts):\(L\le 5,n_i\le 3\),且 \(a,b\) 在范围内等概率随机生成。
- Subtask #2(20pts):$L\le $(一个不超过 \(500\) 的数),且 \(a,b\) 在范围内等概率随机生成。
- Subtask #3(15pts):\(L\le 500\),且 \(a,b\) 在范围内等概率随机生成。
- Subtask #4(15pts):\(a_{i,j}+b_{i,j}=100\)。
- Subtask #5(35pts):无特殊限制。
D2T3
时间限制:2s
给定素数 \(P\) 和 \(m\) 个方程,第 \(i\) 个方程为
你需要找到 \([1,P-1]\) 内的整数解 \(x\)。保证解唯一。
保证数据均随机生成,即先随机 \(P,x\),再随机 \(a_i,b_i\) 并生成 \(c_i\)。保证 \(m=5\)。有 \(T\le 40\) 组数据。
对于 \(100\%\) 的数据,\(P\) 为素数,\(9\times 10^{17}\le P\le 10^{18}\),\(1\le a_i,b_i,c_i<P\)。
- Subtask #1(15pts):\(b_i=1\),保证方程的解 \(x\le 10^{12}\)。
- Subtask #2(??pts):\(b_i=1\),保证方程的解 \(x\le 10^{14}\)。
- Subtask #3(??pts):\(b_i=1\),保证方程的解 \(x\le 10^{16}\)。
- Subtask #4(??pts):\(b_i=1\)。
- Subtask #5(??pts):\(1\le b_i\le 10\)。
- Subtask #6(??pts):\(91\le b_i\le 100\)。