SZ#G8O32. 跳格子

提交4 通过1
通过率25%
时间限制2000ms
内存限制512MiB
    ID: 12065 传统题 2000ms 512MiB 尝试: 4 已通过: 1 难度: 普及+/提高- 上传者: 标签>GESPGESP强化C++c++编程题算法优化与复杂度分析差分优化动态规划

题目描述

题目描述

小泽生活在一条由 NN 个训练格组成的直线路线上。这些格子从左到右编号为 1,2,,N1,2,\ldots,N。开始时,小泽位于格子 11,他希望通过若干次向右跳跃到达格子 NN

给定 KK 个互不相交的整数区间 [L1,R1],[L2,R2],,[LK,RK][L_1,R_1],[L_2,R_2],\ldots,[L_K,R_K]。这里的区间 [l,r][l,r] 表示所有满足 ldrl\le d\le r 的整数 dd 的集合。把这些区间的并集记为 SS

当小泽位于格子 ii 时,他可以从集合 SS 中选择一个整数 dd,然后跳到格子 i+di+d。如果 i+d>Ni+d>N,这次跳跃会越过训练路线的末端,因此不允许进行。

一条到达路线由每次跳跃所选的距离决定。请计算小泽从格子 11 到达格子 NN 的不同路线数量,并输出答案对 998244353998244353 取模后的结果。

输入格式

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

接下来 KK 行,第 ii 行输入两个整数 Li,RiL_i,R_i

输出格式

输出一个整数,表示从格子 11 到格子 NN 的路线数对 998244353998244353 取模后的结果。

5 2
1 1
3 4
9

样例说明 #1

此时 S={1,3,4}S=\{1,3,4\},四条路线为 123451\to2\to3\to4\to51251\to2\to51451\to4\to5151\to5

5 2
3 3
5 5
2

样例说明 #2

此时 S={3,5}S=\{3,5\},从格子 11 无法恰好到达格子 55,因此答案为 00

5 1
1 2
12

样例说明 #3

每次可以跳 11 格或 22 格,到达格子 55 共有 55 种不同路线。

数据范围与约定

2N2×1052\le N\le2\times10^51Kmin(N,10)1\le K\le\min(N,10)1LiRiN1\le L_i\le R_i\le N。任意两个区间没有公共整数,输入中的所有数均为整数。