#3001. Knapsack for All Segments

0

Knapsack for All Segments

Knapsack for All Segments

题目描述

给定一个由 NN 个整数 A1,A2,…,ANA_1, A_2, \ldots, A_N 组成的序列以及一个正整数 SS.
对于满足 1≤L≤R≤N1\leq L \leq R \leq N 的整数对 (L,R)(L, R),定义 f(L,R)f(L, R) 如下:

f(L,R)f(L, R) 是满足 L \leq x_1 < x_2 < \cdots < x_k \leq R 且 Ax1+Ax2+⋯+Axk=SA_{x_1}+A_{x_2}+\cdots +A_{x_k} = S 的整数组合 (x1,x2,…,xk)(x_1, x_2, \ldots , x_k) 的个数。

求对所有满足 1≤L≤R≤N1\leq L \leq R\leq N 的整数对 (L,R)(L, R) 的 f(L,R)f(L, R) 之和。由于该和可能非常大,请对 998244353998244353 取模后输出。

输入格式

输入从标准输入按以下格式给出: NN SS A1A_1 A2A_2 ...... ANA_N

输出格式

输出对 f(L,R)f(L, R) 之和对 998244353998244353 取模后的结果。

3 4
2 2 4
5
5 8
9 9 9 9 9
0
10 10
3 1 4 1 5 9 2 6 5 3
152

提示

输入中的所有数值均为整数。 1≤N≤30001 \leq N \leq 3000 1≤S≤30001 \leq S \leq 3000 1≤Ai≤30001 \leq A_i \leq 3000每一对的 f(L,R)f(L, R) 值如下,总和为 55。

f(1,1)=0f(1,1) = 0 f(1,2)=1f(1,2) = 1(对应序列 (1,2)(1, 2)) f(1,3)=2f(1,3) = 2(对应 (1,2)(1, 2) 和 (3)(3)) f(2,2)=0f(2,2) = 0 f(2,3)=1f(2,3) = 1(对应 (3)(3)) f(3,3)=1f(3,3) = 1(对应 (3)(3))

标签: AtCoder|abc159F

来源

AtCoder|abc159F