AT_utpc2021_k.Divide Polynomials by #Subset Sums

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

设定素数 P=998244353P = 998244353。对于一个多项式 f(x)f(x),我们定义以下操作:

  1. 选择一个正整数 kk 和一个有限次非零多项式 g(x)g(x),使得 f(x)f(x) 和 (1+xk)g(x)(1 + x^k)g(x) 在每个次数上的系数对 PP 取模后相等。
  2. 将 f(x)f(x) 替换为 g(x)g(x),并获得一个得分 2k2^k。

多项式可以进行任意多次这样的操作,求总得分的最大值,这个值被定义为多项式的 美。

给定一个数列 A=(A0,…,AN−1)A = (A_0, \ldots, A_{N-1}),以及 QQ 个查询。

对于第 ii 个查询,给定整数 li,ril_i, r_i,你需要计算多项式 f(x)=∑j=0ri−liAj+lixj\displaystyle f(x) = \sum_{j=0}^{r_i - l_i} A_{j + l_i} x^j 的 美,并输出结果对 PP 取模后的值。

注意,所有操作中,g(x)g(x) 的系数必须是小于 998244353998244353 的非负整数。

输入格式

标准输入按以下格式给出:

N Q A0 … AN−1 l1 r1 ⋮ lQ rQN\ Q\ A_0\ \ldots\ A_{N-1}\ l_1\ r_1\ \vdots\ l_Q\ r_Q

输出格式

请输出 QQ 行。

对于每个查询 ii (1≤i≤Q1 \leq i \leq Q),在第 ii 行输出查询的答案。

输入输出样例

  • 输入#1

    6 3
    1 2 1 1 1 1
    0 2
    2 5
    2 4

    输出#1

    4
    6
    0
  • 输入#2

    11 2
    1 1 0 0 0 0 0 0 0 1 1
    0 10
    4 5

    输出#2

    514
    0

说明/提示

  • 所有输入都为整数。
  • 2≤N≤20002 \leq N \leq 2000
  • 1≤Q≤20001 \leq Q \leq 2000
  • 0≤Ai<9982443530 \leq A_i < 998244353
  • 0≤li<ri≤N0 \leq l_i < r_i \leq N

样例解释 1

针对第一个查询,f(x)=1+2x+x2f(x) = 1 + 2x + x^2,最优策略是选择 k=1k = 1 两次。对于第二个查询,f(x)=1+x+x2+x3f(x) = 1 + x + x^2 + x^3,最佳选择是先选择 k=1k = 1,再选择 k=2k = 2。对于第三个查询,f(x)=1+x+x2f(x) = 1 + x + x^2,无法进行任何操作。

样例解释 2

在第一个查询中,处理 f(x)=1+x+x9+x10f(x) = 1 + x + x^9 + x^{10} 的 美;在第二个查询中,计算 f(x)=0f(x) = 0 的 美。

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页