欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1433B.Yet Another Bookshelf
Yet Another Bookshelf
题目描述
有一个可以放下 本书的书架。第 个位置上如果有书,则 ,否则 。保证书架上至少有一本书。
每次操作,你可以选择某个连续的全是书的区间 (即对于所有 ,都有 ),并进行如下操作之一:
- 向右移动 位:将区间内第 个位置的书移动到 ,对所有 都执行。仅当 且 位置没有书时,才能进行此操作。
- 向左移动 位:将区间内第 个位置的书移动到 ,对所有 都执行。仅当 且 位置没有书时,才能进行此操作。
你的任务是,计算将书架上的所有书收集成一个连续区间(即没有空隙的区间)所需的最少操作次数。
例如,对于 ,书之间有空隙(,而 且 );对于 ,书之间没有空隙;对于 ,同样没有空隙。
你需要回答 组独立的测试用例。
输入格式
输入的第一行包含一个整数 (),表示测试用例的数量。接下来是 组测试用例。
每组测试用例的第一行包含一个整数 (),表示书架上的位置数。第二行包含 个整数 (),其中 表示该位置有书, 表示该位置没有书。保证书架上至少有一本书。
输出格式
对于每组测试用例,输出一个整数,表示将所有书收集成一个连续区间所需的最少操作次数。
说明/提示
在第一个样例中,你可以将区间 向右移动一次,将区间 向右移动一次。所有操作后,书形成了连续区间 。因此答案为 。
在第二个样例中,无需操作,所有书已经形成了连续区间。
在第三个样例中,你可以先将区间 向左移动一次,再将区间 向左移动一次。所有操作后,书形成了连续区间 。因此答案为 。
在第四个样例中,你可以将区间 向右移动一次,将区间 向右移动一次,将区间 向左移动一次,再将区间 向左移动一次。所有操作后,书形成了连续区间 。因此答案为 。
在第五个样例中,你可以将区间 向右移动一次。所有操作后,书形成了连续区间 。因此答案为 。
由 ChatGPT 4.1 翻译
样例
5
7
0 0 1 0 1 0 1
3
1 0 0
5
1 1 0 0 1
6
1 0 0 0 0 1
5
1 1 0 1 1
2
0
2
4
1
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |