欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF2194B.Offshores
Offshores
题目描述
Mark 非常爱钱,他把大部分钱存在银行里。他将自己的钱存放在 家不同的银行中。在第 家银行,他有 卢布。
有一天,Mark 决定将他所有的钱集中到一家银行,因此他需要将钱从一个银行账户转移到另一个账户。所有银行间转账都以相同的方式进行:他一次只能转账 卢布,并且考虑到所有手续费,另一账户实际到账 卢布(因为银行要盈利,所以有 )。
Mark 可能无法将所有钱转移到一家银行,但他希望找到最终任意一家银行中可能拥有的最大卢布数量。
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 ( )。接下来是每个测试用例的描述。
每个测试用例的第一行包含三个整数 、 和 ( , )——分别表示银行数量、转账金额和到账金额。
每个测试用例的第二行包含 个整数 ( )——每家银行中初始的卢布金额。
保证所有测试用例的 值之和不超过 。
输出格式
对于每个测试用例,输出一个数字——任意一家银行中可以获得的最大卢布数量。
说明/提示
在第一个测试用例中,最优的转账序列可能如下所示:
$1\to4,\; 1\to4,\; 4\to3,\; 4\to3,\; 4\to3,\; 3\to2,\; 3\to2,\; 3\to2,\; 3\to2.$
让我们展示每一步后金额的变化:
$(10,9,8,7) \xrightarrow{1\to4} (5,9,8,11) \xrightarrow{1\to4} (0,9,8,15) \xrightarrow{4\to3} (0,9,12,10) \xrightarrow{4\to3} (0,9,16,5) \xrightarrow{4\to3} (0,9,20,0) \xrightarrow{3\to2} (0,13,15,0) \xrightarrow{3\to2} (0,17,10,0) \xrightarrow{3\to2} (0,21,5,0) \xrightarrow{3\to2} (0,25,0,0).$
结果,在一家银行(特别是第二家银行)中,可以获得 卢布,这个值就是该测试用例的答案。
在第三个测试用例中,可以从第一家银行向第二家银行转账 卢布,重复 次,从而在第二家银行获得 卢布。
翻译由 DeepSeek 生成。
样例
6
4 5 4
10 9 8 7
5 13 11
47 52 64 13 91
2 1 1
1000 1000
3 15 14
34 43 52
6 7 6
15 17 14 15 12 16
2 15 10
45 44
25
229
2000
113
72
74
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |