测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A16502. War Strategy

编程题 普及/提高-

题目描述

战争爆发了!你作为国家的最高将领,必须制定战略部署你的军队。

有 $n$ 个基地排成一行,第 $k$ 个基地是你的主基地。最开始,只有一个士兵驻扎在第 $k$ 个基地。每天按照如下顺序发生:

- 你下达命令,选择一个基地 $i$($1 \leq i \leq n$),并选择该基地内任意数量的士兵(可以为 $0$,也可以为该基地全部士兵),然后命令这些士兵全部向相同方向移动:要么移动到 $i-1$ 号基地,要么移动到 $i+1$ 号基地。没有士兵能够移动到 $1$ 号基地的左侧或 $n$ 号基地的右侧。
- 之后,会有一名新的士兵加入到第 $k$ 个基地。这名士兵不能被当天的命令调动。

不过时间紧迫,距离敌军进攻只剩下 $m$ 天。一个基地如果驻有至少一名士兵,则称之为被加固。你的任务是,在第 $m$ 天结束时,你最多能让多少个基地被加固(包括主基地)。

输入格式

每个测试用例包含多组数据。第一行包含测试组数 $t$($1 \le t \le 10^4$)。接下来描述每组数据。

每组数据的第一行包含三个整数 $n$、$m$、$k$($1 \leq k \leq n \leq 10^5$,$1 \leq m \leq 10^9$),表示基地数量、你可以加固基地的天数,以及主基地的编号。

保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每组数据,输出第 $m$ 天结束时你最多能加固的基地数量。

输入输出样例

输入 #1
7
3 1 3
3 3 2
4 2 2
3 2 1
4 3 3
7 7 4
100000 1000000000 100000
输出 #1
2
3
3
2
3
6
100000

说明/提示

在第二个测试用例中,以下为一种加固 $3$ 个基地的方法:

- 第一天,命令第 $3$ 号基地的 $0$ 个士兵移动到第 $2$ 号基地。一天结束时,一名新士兵加入第 $2$ 号基地(此时第 $2$ 号基地有 $2$ 名士兵,其它基地为 $0$)。
- 第二天,命令第 $2$ 号基地的 $1$ 名士兵移动到第 $1$ 号基地。一天结束时,一名新士兵加入第 $2$ 号基地。此时第 $2$ 号和第 $1$ 号基地各有 $2$、$1$ 名士兵。
- 第三天,命令第 $2$ 号基地的 $2$ 名士兵移动到第 $3$ 号基地。一天结束时,一名新士兵加入第 $2$ 号基地。现在第 $1$、$2$、$3$ 号基地上分别有 $1$、$2$、$2$ 名士兵。
- 现在第 $1$、$2$、$3$ 号基地上都至少有一名士兵,因此答案为 $3$。

在第三个测试用例中,以下为一种让 $3$ 个基地被加固的方法:

- 第一天,命令现有士兵从第 $2$ 号基地移至第 $3$ 号基地。一天结束时,有一名新士兵加入第 $2$ 号基地。
- 第二天,命令第 $2$ 号基地的士兵移动到第 $1$ 号基地。一天结束时,有一名新士兵加入第 $2$ 号基地。
- 现在第 $1,2,3$ 号基地上都各有一名士兵,因此答案为 $3$。可以证明在第 $2$ 天结束时,不可能有比 $3$ 个基地更多的被加固。

以下是第三个测试用例的直观演示。

![](/uploads/acgo/image/7653f5da73f94b90b2222e9a627e9caf_7bb1a69873fb.png)
上一题 去做题 下一题