A6650 | 「联合省选 2025」推箱子
来源省选
时间限制2s
内存限制512MB
通过 / 提交0/0
题目描述
在一条无穷长的数轴上摆放着 $n$ 个箱子。第 $i$ $(1 \leq i \leq n)$ 个箱子在时刻 $0$ 位于数轴 $a_i$ 处,而你希望在时刻 $t_i$ 以及**之后的所有时刻**,这个箱子处在数轴的 $b_i$ 处。保证序列 $[a_1, \ldots, a_n]$ 和 $[b_1, \ldots, b_n]$ **单调递增**。
为此,从时刻 $0$ 开始的每个单位时间里,你可以将某个箱子在数轴上移动一个单位长度,也可以什么都不做。你需要保证任意时刻每个点上都只有一个箱子。形式化地,每个单位时间里你可以按照以下方式进行一次操作,也可以不进行操作:
1. 选择任意一个箱子。记其编号为 $i$,它目前的位置为 $p_i$。
2. 选择一个方向 $d \in \{\pm1\}$,其中 $d = 1$ 代表向右,$d = -1$ 代表向左。你需要保证数轴上 $(p_i + d)$ 处没有箱子。
3. 将 $i$ 号箱子从点 $p_i$ 移动到点 $(p_i + d)$ 处。
你想知道,是否存在一种操作方法同时满足所有箱子的要求,即对于任意 $1 \leq i \leq n$,第 $i$ 个箱子在时刻 $t_i$ 以及之后的所有时刻都处于数轴的 $b_i$ 处。
为此,从时刻 $0$ 开始的每个单位时间里,你可以将某个箱子在数轴上移动一个单位长度,也可以什么都不做。你需要保证任意时刻每个点上都只有一个箱子。形式化地,每个单位时间里你可以按照以下方式进行一次操作,也可以不进行操作:
1. 选择任意一个箱子。记其编号为 $i$,它目前的位置为 $p_i$。
2. 选择一个方向 $d \in \{\pm1\}$,其中 $d = 1$ 代表向右,$d = -1$ 代表向左。你需要保证数轴上 $(p_i + d)$ 处没有箱子。
3. 将 $i$ 号箱子从点 $p_i$ 移动到点 $(p_i + d)$ 处。
你想知道,是否存在一种操作方法同时满足所有箱子的要求,即对于任意 $1 \leq i \leq n$,第 $i$ 个箱子在时刻 $t_i$ 以及之后的所有时刻都处于数轴的 $b_i$ 处。
输入格式
从文件
**本题有多组测试数据**。输入的第一行两个整数 $c, T$,分别表示测试点编号和测试数据组数,接下来输入每组测试数据。样例满足 $c = 0$。
对于每组测试数据,第一行一个整数 $n$,表示箱子的个数,接下来 $n$ 行,第 $i$ $(1 \leq i \leq n)$ 行三个整数 $a_i, b_i, t_i$,分别表示第 $i$ 个箱子的初始位置、目标位置和时刻要求。
move.in 中读入数据。**本题有多组测试数据**。输入的第一行两个整数 $c, T$,分别表示测试点编号和测试数据组数,接下来输入每组测试数据。样例满足 $c = 0$。
对于每组测试数据,第一行一个整数 $n$,表示箱子的个数,接下来 $n$ 行,第 $i$ $(1 \leq i \leq n)$ 行三个整数 $a_i, b_i, t_i$,分别表示第 $i$ 个箱子的初始位置、目标位置和时刻要求。
输出格式
输出到文件
对于每组测试数据,输出一行一个字符串
move.out 中对于每组测试数据,输出一行一个字符串
Yes 或 No,表示是否存在一种操作方法同时满足所有箱子的要求。输入输出样例
输入 #1
0 2 2 4 5 1 6 7 1 3 4 5 3 7 6 1 10 8 4
输出 #1
No Yes
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?