题库/X0036

#X0036. [CSP-X 2025 河南] 我要飞得更高 / rocket

    传统题 难度: 普及+ 标签>CSP-X前缀聚合优化DP背包排列计数一维前缀和与区间和
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交
题目描述 查看题解 开始编程Alt+E

X0036 · [CSP-X 2025 河南] 我要飞得更高 / rocket

退出在线编程模式
普及+ 读懂题意,让每一次思考成为成长。
时间限制1000 ms
内存限制512 MiB
通过率—0 / 0 次提交

题目背景

2025 年河南省青少年程序设计能力认证 第二轮认证(小学组) 第四题

PDF 首页注意事项:输入文件中可能存在行末空格,请选手使用更完善的读入方式(例如 scanf 函数)避免出错。


你是一只毛毛虫,想要飞离地球前往空间站。

题目描述

空间站位于距离地球 nn 千米的位置,在 1∼n−11\sim n-1 的每整数千米位置都有一个休息站。你最开始在地球上,距离地球 00 千米。为了飞到空间站,你准备了 mm 种火箭,其中 ii 号火箭能够前进 Li∼RiL_i\sim R_i 千米。为了顺利到达空间站,有如下的限制条件:

  1. 每种火箭可以重复使用,且没有使用顺序的限制。
  2. 每次前进后,如果无法到达空间站,你需要到达距离地球整数千米的位置的休息站,在休息站修整后重新使用某种火箭,直到到达空间站。
  3. 宇宙很大,一旦和地球的距离超出了 nn 千米就会失联,迷失在宇宙中,因此要避免这种情况。

出发前,你想算算顺利到达空间站有几种方案,因为方案数可能很多,你只需要输出方案数对 998244353998244353 取模的结果。前进次数不同或前进次数相同但是存在某一步前进距离不同,则认为两个方案不同。

输入格式

第一行两个空格隔开的正整数表示 nn 和 mm。

接下来 mm 行,第 i+1i+1 行两个空格隔开的正整数 Li,RiL_i, R_i 描述第 ii 个火箭的能力。

输出格式

输出一行一个非负整数表示方案数对 998244353998244353 取模的结果。

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

说明与数据范围

【样例解释 #1】

第一个火箭可以让你前进 11、22 或 33 千米,第二个火箭可以让你前进 22 千米。

到达 11 千米位置的休息站的方案只有一个,就是从地球前进 11 千米。到达 22 千米位置的休息站的方案有两个,一个是前进 22 千米,一个是前进 11 千米再前进 11 千米。到达 33 千米的空间站的方案有四个,分别是前进 33、前进 22 再前进 11、前进 11 前进 22、前进 11 前进 11 再前进 11。

询问你到达 33 千米的空间站的方案数,所以输出 44。

【样例解释 #2】

只有一种火箭,可以让你前进 33 或 44 千米。 到达 33 千米和 44 千米位置的休息站的方案都是 11。无论怎么前进都只能停在中间或者距离超出 55 千米,无法顺利到达空间站,因此到达空间站的方案为 00。

【测试点约束】

对于所有数据,1≤n≤1051\le n\le 10^5,1≤m≤2001\le m\le 200,1≤Li≤Ri≤n1\le L_i\le R_i\le n。每个测试点的具体限制见下表:

测试点编号 约束
1∼31\sim 3 m=1, L1=R1m=1,\ L_1=R_1
4∼54\sim 5 Li=RiL_i=R_i
6∼96\sim 9 1≤n≤10001\le n\le 1000
10∼1310\sim 13 对于任意 1≤i<m1\le i<m,保证 Ri<Li+1R_i<L_{i+1}
14∼2014\sim 20 没有其他限制

来源与本地评测说明

来源:洛谷 B4486。题面按来源整理,源题号保留。

本地测试数据自行构造,经过独立 Python 基准、边界对拍及 Linux C++17 沙箱核验,并非洛谷原版完整评测数据。本地训练分值归一为100分。原题提及但未提供的选手目录附件样例不在本地附件中;本页列出的输入输出样例完整保留。