#ATarc167c. [ARC167C] MST on Line++

[ARC167C] MST on Line++

题目描述

给定正整数 N,KN,K 以及一个长度为 NN 的正整数序列 A=(A1,A2,,AN)A=(A_{1},A_{2},\dots,A_{N})

对于 (1,2,,N)(1,2,\dots,N) 的一个排列 P=(P1,P2,,PN)P=(P_{1},P_{2},\dots,P_{N}),我们考虑如下的“问题 MST on Line”,并将其答案记为 f(P)f(P)

问题 MST on Line

有一个无向带权图 GG,包含 NN 个顶点,顶点编号为 11NN。对于任意满足 1i<jN1\leq i<j\leq N 的整数对 (i,j)(i,j),有如下规则:

  • 如果 jiKj-i\leq K,则在顶点 ii 和顶点 jj 之间存在一条边,该边的权值为 max(APi,APj)\max(A_{P_{i}},A_{P_{j}})
  • 如果 ji>Kj-i>K,则顶点 ii 和顶点 jj 之间没有边。

请计算图 GG 的最小生成树的所有边权之和。

请你求出所有 (1,2,,N)(1,2,\dots,N) 的排列 P=(P1,P2,,PN)P=(P_{1},P_{2},\dots,P_{N}) 对应的 f(P)f(P) 之和,并对 998244353998244353 取模后输出。

输入格式

输入通过标准输入给出,格式如下:

NN KK A1A_{1} A2A_{2} \cdots ANA_{N}

输出格式

请输出答案。

样例 1

输入

5 2
3 4 5 2 1

输出

1740

样例 2

输入

2 1
167 924

输出

1848

样例 3

输入

12 9
22847 98332 854 68844 81080 46058 40949 62493 76561 52907 88628 99740

输出

660459584

说明/提示

限制条件

  • 1K<N50001\leq K<N\leq 5000
  • 1Ai1091\leq A_{i}\leq 10^{9}
  • 输入均为整数

样例解释 1

P=(1,2,3,4,5)P=(1,2,3,4,5) 时,存在如下边:顶点 1122 之间的权值为 44 的边,顶点 2233 之间的权值为 55 的边,顶点 2244 之间的权值为 44 的边,顶点 4455 之间的权值为 22 的边,这 44 条边构成了 GG 的一棵生成树,边权之和为 1515。无法再选取边权和更小的生成树,因此 f(P)=15f(P)=15。将所有 (1,2,3,4,5)(1,2,3,4,5) 的排列 PPf(P)f(P) 求和后,结果为 17401740,请输出该值。

由 ChatGPT 4.1 翻译