欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF2064B.Variety is Discouraged
Variety is Discouraged
题目描述
定义任意数组 的分数为 的长度减去其中不同元素的数量。例如:
- 数组 的分数为 ,因为它长度为 且只有 个不同元素(、、)。
- 数组 的分数为 ,因为它长度为 且只有 个不同元素()。
- 空数组的分数为 。
给定一个数组 。你需要最多一次移除一个非空的连续子数组。
更正式地说,你最多可以执行以下操作一次:
- 选择两个整数 和 ()
- 从 中删除连续子数组 (即将 替换为 )
请输出一个操作,使得操作后 的分数最大。若存在多个答案,输出能使操作后数组长度最短的任一解;若仍有多个答案,可输出任一。
输入格式
第一行包含一个整数 ()——测试用例数量。
每个测试用例的第一行包含一个整数 ()——数组 的长度。
每个测试用例的第二行包含 个整数 ()。
所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,若选择不执行操作,输出 。
否则输出两个整数 和 (),表示被删除子数组的左右边界。
被删除的子数组应满足分数最大,且在满足该条件的所有解中选择能使数组长度最短的任一解。
说明/提示
第一个测试用例有两种选择:
- 不操作:数组 的分数为 。
- 删除 , 的子数组:删除唯一元素后得到空数组,分数为 。
因此最大可能分数为 。但需要额外最小化数组长度,故必须输出第二种选择 。注意第一种不操作的方案是错误的,因为它保留的数组长度更长。
第二个测试用例未选择任何子数组,操作后数组仍为 。其长度为 且有 个不同元素,分数为 。可以证明这是能最大化分数且长度最短的数组。
第三个测试用例选择删除子数组 ,操作后数组变为 。其长度为 且有 个不同元素,分数为 。可以证明这是能最大化分数且长度最短的数组。
翻译由 DeepSeek R1 完成
样例
3
1
1
5
1 1 1 1 1
4
2 1 3 2
1 1
0
2 3
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |