Pro Tanto Quid Retribua|

Schucking_Sattin

园龄:2年11个月粉丝:13关注:28

2023-02-09 14:57阅读: 33评论: 0推荐: 0

ARC114C Sequence Scores

ARC114C Sequence Scores(2056)

洛谷:ARC114C Sequence Scores

Atcoder:ARC114C Sequence Scores

Problem

给定一个由 1M 的整数组成的,长为 N 的序列 A

对于 A 定义 f(A):

  • 给一个长为 N 的序列 X,初始所有元素都为0f(A) 为: 重复以下操作,以使 X 等于 A 的最小操作次数。

    • 指定 1lrN1vM。 对于 lir,将 xi 替换为 max(xi,v)

A 共有 MN 个可能的序列。 求所有可得序列的 f(A) 之和除以 9982444353 的余数。

Solution

用自己的方式诠释操作,计数的切入点就是转化问题。

考虑覆盖得到最终序列的过程,其实就是从前往后将一个点作为操作的左端点向右覆盖的问题,我们称其为对点的一次操作。

不难发现,对一个位置上的点的操作只会进行一次。

我们不妨统计每个点在不同权值的情况下被操作的总次数,即假定 (i,v)(表示位置 i 处填权值 v)被操作的情况下,对应的序列个数。

分该位置的左侧和右侧考虑。

右侧的数可以任意填,不会影响 (i,v) 的操作情况。

左侧序列则会决定 (i,v) 是否会被操作。

具体地,当且仅当下列情况的其中一种发生时:

  • 1i1 中没有出现 v
  • 1i1 中所有满足 aj=vj,保证 ji1 中存在一个位置 k 使得 ak<v

(i,v) 会被操作,否则 (i,v) 可以被之前出现过 v 的位置上的操作给覆盖到。

模拟赛时一直考虑枚举最左边的 v 在什么位置,然后一直出错。

如果静下心来观察,发现只有最靠近 ixax=v)是有用的。如果 xi1 中不存在 ak<v,则 (i,v) 不会被操作;否则,对于 x 之前的所有权值为 v 的位置 y,都因为 yi1 包含 xi1 而合法。

因此只需枚举最靠近 iv 在什么位置 x 即可,而 1x1 间可以填 1m 中的任意数,x+1i1 间不能填 v 且必须出现小于 v 的数。

总结就是,对 (i,v),贡献为:

mni((m1)i1+j=1i2mj1((m1)ij1(mv)ij1))

这个是可以 O(n2) 预处理出来一些东西然后 O(1) 查询的,过程不难,不再赘述。注意只能求和到 i2,因为 ai1=v(i,v) 一定不用被操作。否则会出现一些 00 之类的问题。

code ARC114C

本文作者:Schucking-Sattin

本文链接:https://www.cnblogs.com/Schucking-Sattin/p/17105312.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Schucking_Sattin  阅读(33)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起