A96805.跳格子

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有一个由 NN 个格子组成的格子列,这些格子从左到右依次编号为 1,2,,N1,2,\dots,N

住在这个格子上的 Welcome24ever 现在在第 11 个格子,他想通过下面描述的方法不断移动,最终到达第 NN 个格子。

给定一个不超过 1010 的整数 KK,以及 KK 个互不相交的区间 [L1,R1],[L2,R2],,[LK,RK][L_1,R_1],[L_2,R_2],\dots,[L_K,R_K],这些区间的并集记为集合 SS
这里区间 [l,r][l,r] 表示所有满足 lxrl \le x \le r 的整数 xx 的集合。

  • 当 Welcome24ever 在第 ii 个格子时,他可以从集合 SS 中任选一个整数 dd,然后移动到第 i+di+d 个格子。
  • 如果 i+di+d 超出了 11NN 的范围,则不能进行这样的移动。

请你计算,从第 11 个格子到达第 NN 个格子的不同移动方案数。答案对 998244353998244353 取模。

输入格式

输入的第一行包含两个整数 N,KN,K

接下来的 KK 行中,第 jj 行包含两个整数 Lj,RjL_j,R_j

输出格式

输出一个整数,表示从第 11 个格子到达第 NN 个格子的方案数,对 998244353998244353 取模。

输入输出样例

  • 输入#1

    5 2
    1 1
    3 4

    输出#1

    4
  • 输入#2

    5 2
    3 3
    5 5

    输出#2

    0
  • 输入#3

    5 1
    1 2

    输出#3

    5
  • 输入#4

    60 3
    5 8
    1 3
    10 15

    输出#4

    221823067

说明/提示

数据范围

  • 2N2×1052 \le N \le 2 \times 10^5
  • 1Kmin(N,10)1 \le K \le \min(N,10)
  • 对所有 jj,有 1LjRjN1 \le L_j \le R_j \le N
  • 对所有 iji \ne j,区间 [Li,Ri][L_i,R_i][Lj,Rj][L_j,R_j] 互不相交;
  • 输入中的所有数都是整数。

样例解释 1

此时集合 SS 为区间 [1,1][1,1][3,4][3,4] 的并集:

S={1,3,4}.S = \{1,3,4\}.

从第 11 个格子出发,到达第 55 个格子的方案共有 44 种:

  1. 依次到达格子 1,2,3,4,51,2,3,4,5(每次移动 11 格);
  2. 依次到达格子 1,2,51,2,5(先移动 11 格,再移动 33 格);
  3. 依次到达格子 1,4,51,4,5(先移动 33 格,再移动 11 格);
  4. 依次到达格子 1,51,5(直接移动 44 格)。

因此答案为 44

样例解释 2

此时集合 S={3,5}S = \{3,5\}
从第 11 个格子出发:

  • 第一次移动可以到格子 44(加 33)或者格子 66(加 55,非法);
  • 从格子 44 再移动 3355 都会超出范围。

所以无法到达第 55 个格子,方案数为 00

样例解释 3

此时集合 S={1,2}S = \{1,2\}
可以验证所有到达格子 55 的方案对应于将数字 1122 相加得到和为 44 的不同拆分方式,一共有 55 种:

  • 1+1+1+11+1+1+1
  • 1+1+21+1+2
  • 1+2+11+2+1
  • 2+1+12+1+1
  • 2+22+2

因此答案为 55

首页