CF2091G Gleb and Boating

题目描述

程序员 Gleb 经常访问 IT Campus "NEIMARK" 参加编程训练。 Gleb 不仅是程序员,还是一位著名的划船运动员,因此他选择通过划皮划艇沿河流完成部分通勤路程。假设 Gleb 从点 $0$ 出发,必须到达点 $s$(即沿直线划行 $s$ 米)。为增加挑战性,Gleb 决定不离开线段 $[0, s]$。皮划艇的尺寸可忽略不计。 Gleb 是实力强劲的程序员!初始时他的力量为 $k$。Gleb 的力量直接影响皮划艇的运动:若当前力量为 $x$,则每次划桨可使皮划艇沿当前方向移动 $x$ 米。Gleb 可以调头并继续向相反方向移动,但此操作十分困难,每次调头后力量会减少 $1$。力量永远不会变为 $0$ —— 若当前力量为 $1$,则即使调头后仍保持 $1$。此外,Gleb 不能连续两次调头 —— 每次调头后必须至少移动一次才能再次调头。同理,Gleb 不能在出发后立即调头 —— 必须先进行一次划桨。 Gleb 希望在从点 $0$ 到达点 $s$ 的过程中不离开线段 $[0, s]$ 并尽可能保留最多力量。请帮助他 —— 给定 $s$ 和初始力量 $k$,确定到达点 $s$ 时可能保留的最大力量。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数量 $t$ ($1 \leq t \leq 100$)。接下来是测试用例描述。 每个测试用例单独一行,包含两个整数 $s$ 和 $k$ ($1 \leq s \leq 10^9$,$1 \leq k \leq 1000$,$k \leq s$)。 保证所有测试用例的 $k$ 之和不超过 $2000$。

输出格式

对于每个测试用例,输出 Gleb 在旅程结束时可能保留的最大力量。

说明/提示

第一个样例中 Gleb 的一种可能移动方式: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2091G/776d3b954c1b6c71e54b3d9667d6f17ccd68b4e7.png) 翻译由 DeepSeek R1 完成