欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1481B.New Colony
New Colony
题目描述
到达目的地后,你想在新星球上建立一个新的殖民地。由于这个星球上有许多山脉,而殖民地必须建在平坦的地面上,你决定用巨石来填平这些山脉(你还在做梦,所以这对你来说很合理)。
你得到了一个数组 ,其中 表示第 座山的高度, 表示你拥有的巨石数量。
你将从第一座山的顶部依次投掷巨石,巨石的滚动规则如下(假设当前山的高度为 ):
- 如果 ,巨石会滚到下一座山;
- 如果 ,巨石会停止滚动,并使当前山的高度增加 (即 );
- 如果巨石滚到了最后一座山,它会掉进废物收集系统并消失。
你需要找出第 块巨石停止的位置,或者判断它会掉进废物收集系统。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
每个测试用例包含两行。每个测试用例的第一行包含两个整数 和 (;),分别表示山的数量和巨石的数量。
第二行包含 个整数 (),表示每座山的高度。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,如果第 块巨石会掉进废物收集系统,输出 。否则,输出第 块巨石停止的位置。
说明/提示
让我们模拟第一个样例:
- 第一块巨石从 开始;由于 ,它滚到 ,并在 时停止。
- 新的高度为 。
- 第二块巨石从 开始;由于 ,它滚到 ;由于 ,它滚到 ,并在 时停止。
- 新的高度为 。
- 第三块巨石从 开始;由于 ,它滚到 ,并在 时停止。
- 新的高度为 。
每块巨石停止的位置分别为 。
在第二个样例中,所有 块巨石都会直接停在第一座山,使其高度从 增加到 。
第三个样例与第一个类似,但现在你要投掷 块巨石。前三块的滚动方式与第一个样例相同。之后,山的高度变为 ,所以剩下的两块巨石会掉进废物收集系统。
在第四个样例中,唯一的一块巨石会直接掉进废物收集系统。
由 ChatGPT 4.1 翻译
样例
4
4 3
4 1 2 3
2 7
1 8
4 5
4 1 2 3
3 1
5 3 1
2
1
-1
-1
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |