CF461C Appleman and a Sheet of Paper
题目描述
Appleman 有一张非常大的纸。这张纸的形状是 $1\times n$ 的矩形。你的任务是帮助 Appleman 对这张纸进行折叠。实际上,你需要执行 $q$ 次操作。每次操作有以下两种类型之一:
1. 在位置 $p_i$ 处将纸张进行折叠。该操作后,纸张最左端宽度为 $p_i$ 的部分将被折叠到纸张最右端宽度为 $[当前纸张宽度]-p_i$ 的部分之上。
2. 询问:如果我们将在距离当前纸张左边界 $l_i$ 和 $r_i$ 处各切一次,只考虑两刀之间的所有纸片,所有这些纸片的总宽度是多少。
为了更好地理解题目,请参考第一个测试样例的解释。
输入格式
第一行包含两个整数:$n$ 和 $q$($1 \le n \le 10^{5}$,$1 \le q \le 10^{5}$)——纸张的宽度和操作的数量。
接下来的 $q$ 行,每行为如下两种格式之一:
- "$1\ p_i$"($1 \le p_i < [当前纸张宽度]$)——第一种操作类型。
- "$2\ l_i\ r_i$"($0 \le l_i < r_i \le [当前纸张宽度]$)——第二种操作类型。
输出格式
对于每个第二种类型的查询,输出答案。
说明/提示
下图展示了第一个样例在各次操作后的纸张形状:

第一次折叠后,纸的宽度变为 $4$,第二次折叠后,纸的宽度变成 $2$。
由 ChatGPT 5 翻译