欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1023D.Array Restoration
Array Restoration
题目描述
最初有一个包含 个整数的数组 ,其下标从 到 。
对该数组进行了恰好 次操作。在第 次操作中,选择了一个区间 (),并将从 到 (包括两端)内的所有元素的值都改为 。操作的顺序不能改变,所有 次操作都已执行。已知数组的每个位置都至少被某个区间覆盖过一次。
我们本可以让你判断,给定一个由 个整数(取值范围为 到 )组成的数组,是否可以通过上述操作得到。但我们觉得这对你来说太简单了。
因此,我们对问题进行了如下增强:在最终数组中,选择了一些位置(可能为空),并将这些位置上的元素值设为 。
你的任务是判断,是否可以通过上述操作得到这个数组。如果可以,请还原出一个可能的原始数组。
如果存在多种可能的原始数组,输出任意一种即可。
输入格式
第一行包含两个整数 和 (),分别表示数组的长度和操作次数。
第二行包含 个整数 (),表示最终得到的数组。如果某个位置 上的元素为 ,则该位置的元素可以是 到 之间的任意整数。
输出格式
如果可以通过 次操作得到数组 ,输出 "YES"。
否则输出 "NO"。
如果可以得到,第二行输出 个整数,第 个数表示还原后的第 个元素,且每个元素的值应在 到 之间。该数组应能通过恰好 次操作得到。
如果存在多种可能的原始数组,输出任意一种即可。
说明/提示
在第一个样例中,你也可以将 替换为 ,但不能替换为 。
在第二个样例中,直到第 次操作选择区间 之前,选择哪些区间并不重要。
第三个样例说明了操作顺序不能改变,不能先将 赋值为 ,再将 赋值为 。 的区间必须在 的区间之前执行。
第四个样例有很多种正确的还原数组。
由 ChatGPT 4.1 翻译
样例
4 3
1 0 2 3
YES
1 2 2 3
3 10
10 10 10
YES
10 10 10
5 6
6 5 6 2 2
NO
3 5
0 0 0
YES
5 4 2
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |