Loading

NOIP模拟赛 #9

因为体艺节,旷了比较多的模拟赛。

A

给定 \(n, a_{1\dots n}, b_{1\dots n}\),称一个序列 \(x_{1\dots k}\) 是好的,当且仅当 \(\forall i \in [1, k - 1], \ b_i \cdot x_i < x_{i + 1}\),求出 \(a\) 中最长好的子序列的长度。

\(1\le n\le 10^6, \ 1\le a_i \le 10^{12}, \ 1\le b_i\le 10^6\)

和 LIS 很像,设 \(f_i\) 表示以 \(a_i\) 结尾的最长好的子序列长度,可以使用树状数组优化,只需要每次在树状数组中位置 \(b_{f_i} \cdot a_i + 1\) 的位置 chkmax 即可。

B

给定 \(m, d, w, a, b\),求出有多少个有序二元组 \((x, y)\) 满足 \(1\le x, y\le min(m, d)\) 且满足

\[\begin{cases} xd + y \equiv a \pmod w \\ yd + x \equiv b \pmod w \end{cases}\]

多组数据。

\(1\le T\le 10, \ m, d, w, a, b \le 10^9\)

两式相加得到 \((x + y)(d + 1) \equiv a + b \pmod w\),相减得到 \((x - y)(d - 1) \equiv a - b\pmod w\),可以得到 \(x + y, x - y \pmod w\) 的值,进而得到 \(x \bmod w\)\(y \bmod w\)

但是因式可能为零,分类讨论。

  • \(d - 1 \equiv 0 \pmod w, \ d + 1 \equiv 0 \pmod w\) 时,易得 \(w = 2\),特判即可。

  • \(d - 1 \equiv 0 \pmod w\),设 \(x + y = c\),将 \(y = c - x\) 带入方程组得

\[\begin{cases} x(d - 1) + c \equiv a \pmod w \\ -x (d - 1) + cd \equiv b \pmod w \end{cases}\]

发现 \(x\) 取任何值都是可以的,只需保证 \(x + y = c\),暴力分讨计算即可。

  • \(d + 1\equiv 0 \pmod w\) 时,只需保证 \(x - y = c\) 即可,同样分讨计算。

代码细节较多。

C

一堆牌,共 \(n + m\) 张。其中有 \(n\) 张编号分别为 \(1,2,\dots, n\) 的数字牌,以及 \(m\) 张王牌。维护数字集合 \(S\),每次随机取出牌堆中一张牌,若为数字牌则将其移除出牌堆,若为王牌则将所以被移除的牌重新加入牌堆。求每种编号的牌都至少被取出一次的期望抽牌次数,答案模 \(10^9 + 7\)

\(1\le n, m\le 10^6\)

考虑 Min-Max 容斥,枚举 \(k\) 并计算其中 \(k\) 张数字牌任意一张第一次被取出的期望时间。定义轮次,以抽取王牌来划分不同轮次。定义关键牌为这 \(k\) 张数字牌以及 \(m\) 张王牌,共 \(m + k\) 张牌,发现一个轮次结束当且仅当抽取到关键牌,这 \(k\) 张牌任意一张第一次被取出的期望轮次数量为 \(\dfrac {m + k} k\)。关键牌的抽取次数就是轮次数量,考虑剩下 \(n - k\) 张非关键牌,每张牌在每个轮次中被抽取的概率为 \(\dfrac 1 {m + k + 1}\),所以贡献为 \(\dfrac {m + k (n - k)} {k (m + k + 1)}\)

D

给定 \(a_{1\dots n}\),多次操作,支持区间加,查询一个区间 \([l, r]\) 内满足 \(l\le x\le y\le r\) 的前 \(k\) 大的 \(a_x - a_y\) 之和。

\(1\le n,m\le 10^5, \ \sum k \le 3\times 10^5\)

考虑维护一个 node 为 \((l_1, r_1, l_2, r_2)\) 表示 \(x \in [l_1, r_1], \ y \in [l_2, r_2]\) 的信息,其中要么 \(l_1 = l_2 \land r_1 = r_2\),要么 \(l_1\le r_1 < l_2 \le r_2\)。仿照 [NOI2010] 超级钢琴,将这些 node 加入大根堆,权值为最大的 \(a_x - a_y\)

  • 一个 \(l = l_1 = l_2 \land r = r_1 = r_2\) 的 node 被取出后,加入 \((l, x, l, x), \ (x + 1, r, x + 1, r), \ (l, x - 1, x + 1, r), \ (x, x, x + 1, y - 1), \ (x, x, y + 1, r)\)

  • 一个 \(l_1\le r_1 < l_2\le r_2\) 的 node 被取出后,加入 \((l_1, r_1, l_2, y - 1), \ (l_1, r_1, y + 1, r_2), \ (l_1, x - 1, l_2, r_2), \ (x + 1, r_1, l_2, r_2)\)

  • 启示:超级钢琴 trick。

posted @ 2024-11-11 16:05  Lgx_Q  阅读(12)  评论(0编辑  收藏  举报