A16502 | War Strategy
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
战争爆发了!你作为国家的最高将领,必须制定战略部署你的军队。
有 $n$ 个基地排成一行,第 $k$ 个基地是你的主基地。最开始,只有一个士兵驻扎在第 $k$ 个基地。每天按照如下顺序发生:
- 你下达命令,选择一个基地 $i$($1 \leq i \leq n$),并选择该基地内任意数量的士兵(可以为 $0$,也可以为该基地全部士兵),然后命令这些士兵全部向相同方向移动:要么移动到 $i-1$ 号基地,要么移动到 $i+1$ 号基地。没有士兵能够移动到 $1$ 号基地的左侧或 $n$ 号基地的右侧。
- 之后,会有一名新的士兵加入到第 $k$ 个基地。这名士兵不能被当天的命令调动。
不过时间紧迫,距离敌军进攻只剩下 $m$ 天。一个基地如果驻有至少一名士兵,则称之为被加固。你的任务是,在第 $m$ 天结束时,你最多能让多少个基地被加固(包括主基地)。
有 $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$。
每组数据的第一行包含三个整数 $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$ 个基地更多的被加固。
以下是第三个测试用例的直观演示。

- 第一天,命令第 $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$ 个基地更多的被加固。
以下是第三个测试用例的直观演示。

C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?