「杂题乱刷2」AT_abc140_e

哎哎,太毒瘤,哎哎,太深刻。

题目链接

AT_abc140_e [ABC140E] Second Sum

解题思路

考虑有以下基本性质:

\(1 \sim n\) 的数列上,包含 \(i (1 \le i \le n)\) 点的区间(端点为整数)个数为 \(i \times (n - i + 1)\) 个。

因此此题我们可以使用拆贡献来计算。

具体的,设 \(maxl\) 表示 \(a_i\) 左边的第一个比 \(a_i\) 大的数字编号,\(maxll\) 表示 \(a_{maxl}\) 左边的第一个比 \(a_{maxl}\) 大的数字编号,\(maxr\) 表示 \(a_i\) 右边的第一个比 \(a_i\) 大的数字编号,\(maxrr\) 表示 \(a_{maxr}\) 右边的第一个比 \(a_{maxr}\) 大的数字编号,

以上定义均有若没有这样的数字则编号为 \(-1\) 的性质。

然后有以下分讨:

  • \(maxl = maxr = -1\),则方案数为 \(0\)

  • \(maxl = maxrr = -1, maxr \neq -1\),则方案数为 \((n-maxr+1) \times i\)

  • \(maxl = -1, maxrr \neq -1\),则方案数为 \((maxrr-maxr) \times i\)

  • \(maxr = maxll = -1, maxl \neq -1\),则方案数为 \((n-i+1) \times maxl\)

  • \(maxr = -1, maxll \neq -1\),则方案数为 \((n-i+1) \times (maxl-maxll)\)

  • \(maxll = maxrr = -1, maxl \neq -1, maxr \neq -1\),则方案数为 \(maxl \times (maxr-i)+(n-maxr+1) \times (i-maxl)\)

  • \(maxll = -1, maxrr \neq -1, maxl \neq -1\),则方案数为 \(maxl \times (maxr-i) + (maxrr-maxr) \times (i-maxl)\)

  • \(maxrr = -1, maxll \neq -1, maxr \neq -1\),则方案数为 \((n-maxr+1) \times (i-maxl) + (maxl-maxll) \times (maxr-i)\)

  • \(maxrr \neq -1, maxll \neq -1\),则方案数为 \((maxl-maxll) \times (maxr-i) + (maxrr-maxr) \times (i-maxl)\)

然后这题就做完了,有一车细节,为啥只评绿啊?

参考代码

代码太长了,所以贴个提交记录

posted @ 2024-12-13 00:04  wangmarui  阅读(1)  评论(0编辑  收藏  举报