CF2150D

题目大意:

有一个长度为 \(n\) 的坐标轴,初始时每个位置有一个人。
你可以进行若干次(可以为 0)次操作,每次操作选择一个位置 \(1 \le p \le n\),并将所有位置 \(x < p\) 的人右移一格,将 \(x > p\) 的人左移一格,\(p = x\) 的人不动。
然后假设最终人们的位置是 \(a_{1},a_{2} \sim a_{n}\)
那么你的得分为 \(\sum_{i = 1}^{n} val_{a_{i}}\)
问所有的不同的方案的得分之和,两个方案不同当且仅当最终序列不同。
\(n \le 2 \times 10^5\)

解题思路:

考虑怎样一个最终状态是合法的,首先他每次最多合并两个位置的人,所以他时时刻刻都是一段区间上有人。
但也不是所有区间填充方案都合法,因为你考虑你每次选一个不是最左/最有的位置并让人们向他靠拢不会改变他的奇偶性。
而他初始的是 \(1\),所以你需要保证除了最两边的两个位置,其他位置的人数都为奇数。

而最边上的两个自然是没有限制的。
那么我们现在考虑如何对这玩意进行奇数,首先最暴力的想法是枚举 \(l,r\) 表示钦定他最终在 \(l \sim r\) 这段区间内。
然后我们考虑如何快速找到这个区间的答案,由于最左和最右的两个位置比较“特殊”,所以我们先枚举一下他的奇偶性,然后再共同考虑。
现在就要求求出:

\[\sum_{x_{l},x_{l+1} \sim x_{r}} = n \]

\[x_{l},x_{l+1} \sim x_{r} = 1 \bmod 2 \]

\[\sum_{x_{l},x_{l+1} \sim x_{r}} \sum_{i=l}^{r} x_{i} \times val_{i} \]

但是这是不好求的,因为我们不能枚举任何东西。
但换个角度来说,我们能算方案数,而每个数都是等价的,所以我们可以算出总和然后乘上方案数即可。

于是我们就有 \(O(n^2)\) 了,但我们求贡献的时候只与和以及长度有关,所以只需要枚举长度即可。
\(O(n)\)

计数的时候如果单个不好算的时候可以考虑一下整体。

posted @ 2025-11-27 19:27  positive_deviation  阅读(2)  评论(0)    收藏  举报