![]() |
||||||||||
|
||||||||||
最小集合Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 1 Accepted Submission(s): 1 Problem Description 你有一个长度为 $ n $ 的数组。 每次操作你可以选择索引 $ i $,将 $ a_i $ 增加$ m $或者减少 $ m $。 $ q $ 次询问, 每次询问给你一个 $ k $, 表示你最多能操作的次数。 求操作后数组中不同元素个数的最小值。 Input 第一行包含一个整数 $T$ ( $1 \le T \le 20$ ),表示测试总数 每个测试的第一行包含两个整数 $ n $,$ m $( $1 \le n \le 300$ , $1 \le m \le 10^{6}$), 分别表示数组的大小、每次操作的变化值。 第二行包含 $ n $ 个整数,数组中的每个元素的值( $0 \le a_i \le 10^{12}$ )。保证数组中各个元素互不相同。 第三行包含一个数 $ q $, 表示询问的个数。接下来 $ q $ 行,每行包含一个数 $ k $,表示最多能操作的次数。( $1 \le q \le 10^{6}$ , $0 \le k \le 10^{12}$)。 保证 $ n $ 的总和不超过 $ 600 $, $q$ 的总和不超过 $10^{6}$。 Output 为了防止输出过大,按照以下格式输出: 初始 $ans = 0$ ,对于第 $ i $ 个询问假设答案为 $ ans_i $ ,赋值 $ ans = (ans * 13331 + ans_i) $ 并对 $ 998244353 $ 取模。 你只需输出最后的 $ ans $ 即可 Sample Input
Sample Output
Hint 第一次询问的答案为 $ 3 $, 第二次询问的答案为 $ 4 $,最后 $ ans = 3 * 13331 + 4 = 39997 $。 Source | ||||||||||
|