20251116 正睿

25noip十连测day10

挂分场,\(260 \rightarrow 50\)。大样例水到极致。

A

简单题,判一下 \(n = 1\)!!

当最后依次操作是 A 时,A 一定胜利。否则 A 保留尽可能多的偶数(\(0\)),B 保留尽可能多的 \(1\)。需要注意 A 可以将两个连续的 $1 $变成 \(0\),使得 B 还要花一次操作删掉这个 \(0\),可以看成 A 不花费代价消掉两个相邻的 \(1\)。删掉这样的 \(1\),看 \(0, 1\) 那个多即可。

时间复杂度:\(O(n)\)

没发现 A 可以消掉相邻的两个 \(1\)\(100 \rightarrow 50\)

B

\(n\) 个数,每个数对应一个区间 \([l_i, r_i]\)。将这 \(n\) 个数重排,如果 \(i\) 出现在 \(l_i \sim r_i\) 中某个数的后面获得 \(a_i\) 的收益。输出收益最大值

\(n \le 2 \times 10^5, 0 \le a_i \le 20000\)

\(l_i \sim r_i\) 中的点向 \(i\) 连一条有向边,显然是可以缩点的。对于一个 scc 来说,如果有一个 scc 连向它,里面的点都是可以贡献的;否则选择这个 scc 内权值最小的丢掉(放在开始)即可。

建图使用线段树优化即可,时间复杂度:\(O(n \log n)\)

思路十分自然,但是在 scc 之间建图时没有枚举了线段树上的点(写的暴力,然后忘改了),痛失 \(100pts\)

C

image

\(n \le 3000, m \le 2 \times 10^5\)

点击查看标签 标签:容斥原理,二项式反演(min-max 容斥)

\(5\) 个操作太繁琐了,简化一下。

  • 因为每个 \(a_i\) 均不同,所以每个差分数组 \(d\) 都对应原来的 \(n!\) 个序列。条件转化为随机 \(d\) 序列满足 \(d_i \ge 1, \sum d_i \le m\)
  • 根据期望线性性,只需要求出 \(E(b_i)\),前缀的的结果就是 \(E(b_1 + b_2 + \dots b_i) = E(b_1) + E(b_2) + \dots E(b_i)\)

如果有 \(n\)\(> 0\) 的数,总和至多为 \(m\),方案数为 \(\binom{m}{n}\)


先讲讲我的抽象 \(60pts\) 做法(\(n \le 50, m \le 10000\))。

如果要求 \(E(b_i)\),可以枚举 \(b_i\) 的取值 \(v\),算出概率(方案数)。枚举 \(b_{l \sim r} = v\), 那么 \(b_{1 \sim l - 1} < v, b_{r + 1, n} > v\)。转化到 \(d\) 上就是有 \(r - l + 1\)\(d_i = v\)\(l - 1\)\(d_i < v\)\(n - r\)\(d_i > v\)。就和 HAOI2008 硬币购物 一样了,对于 \(< v\) 的,枚举多少个数不满足要求,转化成 \(\ge v\) 的,就可以组合数算了(\(m\) 减掉 \(v - 1\) 即可)。

之所以要枚举 \(l, r\),是因为相同的数在 \(d\) 中顺序时不贡献的(1 1 只算一次。)因为 \([l, r]\) 的每个 \(i\) 贡献一样,可以先枚举 \(l, r\),算出贡献再加到 \(i\) 上面。

时间复杂度:\(O(n^3m)\)? 还是 \(O(n^2m \log n)\) 不清楚。

可惜因为多乘个 \(i\) 时忘记取模爆 ll 了。该死!!


题解的做法是这样的。直接枚举 \(v\) 算方案数太难算了,计算 \(\ge v\) 的方案数再加起来即可。(我是 sb 没想到。)

枚举 \(v\),设 \(d\) 中有 \(k\) 个数恰好 $ \ge v$ 的方案数为 \(f_{k, v}\),那么对 \(b_{n - k + 1} \sim b_k\) 的贡献有 \(f_{k, v}\)

\(f_{k, v}\) 时难算的,看到恰好要先到二项式反演,设 \(g_{k, v}\) 表示选出 \(k\) 个数 \(\ge v\) 的方案数(组合数算算即可)。

\[g_{k, v} = \sum \binom{k'}{k} f_{k', v} \iff f_{k, v} = \sum (-1)^{k' - k} \binom{k'}{k} g_{k, v} \]

因为这个反演和 \(v\) 没有关系,可以令 \(s_k = \sum g_{k, v}\),对 \(s_k\) 做反演得到的是 \(\sum f_{k, v}\)

时间复杂度:\(O(n^2 + m\log n)\)

  • 注意,\(g\) 只有 \(O(m \log n)\) 项(实际更小),因为 \(k \le \frac{m}{v}\)(调和级数)。
  • 二项式反演是 \(O(n^2)\) 的。

题解还说可以 min-max 容斥,但本质是一样的


总的来说,这个题还是挺不错的,用到了期望线性性 + 二项式反演,部分分使用容斥(更低档可以 DP)。枚举 \(b_i\),要想到求的是 \(\ge v\) 的方案数,而不是 \(= v\) 的(经典套路,但 sb 地的就是没想到。。。),再从枚举 \(b_i\) 转为枚举 \(v\),最后转化成一个可以使用二项式反演做的题。

posted @ 2025-11-16 21:59  xiehanrui0817  阅读(9)  评论(0)    收藏  举报