剪刀 / Škare
时间限制:1秒 内存限制:256M
题目描述
为了把使用剪刀的技能练到极致,Fran 想出了一个新的训练方法。
他有一条长度为 \(n\) 厘米的纸条和一把剪刀,并请 Lana 给他下达切割指令。
Lana 会给 Fran 共 \(k\) 条指令,每条形如:“把第 \(x\) 条纸条在距离左端 \(l\) 厘米处剪开”。
一开始 Fran 只有一条纸条。第一次剪开后会得到两段:长度分别为 \(l\) 和 \(n-l\)。此后每次剪开某一段纸条时,新产生的两段会**替换**原来那一段,并保持在序列中的位置。
更形式化地:设当前共有 \(m\) 条纸条,长度依次为 \(a_1,a_2,\dots,a_m\)。若 Lana 让他把第 \(x\) 条剪在 \(l\) 厘米处,则新序列变为:\(a_1,a_2,\dots,a_{x-1},\,l,\,a_x-l,\,a_{x+1},\dots,a_m\)。
完成所有切割后,他们想验证过程是否正确,其中一种方式是统计最终序列中有多少种**不同的纸条长度**。请你计算这个数量。
输入格式
第一行包含两个自然数 \(n,k\)(\(2 \le n \le 500\),\(1 \le k < n\)),表示原始纸条长度与指令条数。
接下来 \(k\) 行每行包含两个自然数 \(x_i,l_i\)(\(1 \le x_i \le i\),且 \(1 \le l_i \le L-1\),其中 \(L\) 为当时第 \(x_i\) 条纸条的长度),表示把当时从左到右数第 \(x_i\) 条纸条在 \(l_i\) 厘米处剪开。
输出格式
输出一行一个整数,表示完成所有切割后,最终剩下的纸条有多少种不同的长度。
输入输出样例 #1
输入 #1
5 1
1 2
输出 #1
2
输入输出样例 #2
输入 #2
6 2
1 4
1 2
输出 #2
1
输入输出样例 #3
输入 #3
10 3
1 2
2 3
3 2
输出 #3
2
说明/提示
【样例解释】
样例 #1 解释:\([5] \to [2,3]\)。
样例 #2 解释:\([6] \to [4,2] \to [2,2,2]\)。
样例 #3 解释:\([10] \to [2,8] \to [2,3,5] \to [2,3,2,3]\)。
【子任务】
| 子任务 | 分值 | 限制 |
|---|---|---|
| \(1\) | \(9\) | \(k \le 3\) |
| \(2\) | \(6\) | 对所有 \(i\),\(l_i = 1\) |
| \(3\) | \(13\) | 对所有 \(i\),\(x_i = i\) |
| \(4\) | \(22\) | 无额外限制 |
信息
- ID
- 1132
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 被复制
- 2
- 上传者