CF1887F.Minimum Segments
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有一个由 1 到 n 的整数构成的序列 a1,a2,…,an,这些整数不一定互不相同。出于某种原因,你决定计算该序列的如下特征:
- 令 ri(1≤i≤n)为最小的 j≥i,使得在子区间 ai,ai+1,…,aj 中,序列 a 中所有不同的数字都出现过。更正式地说,对于任意 k∈[1,n],存在 l∈[i,j] 使得 ak=al。如果不存在这样的 j,则 ri 记为 n+1。
- 序列 a 的特征定义为序列 r1,r2,…,rn。
不幸的是,序列 a 丢失了,但你仍然保留着它的特征 r。你想要重构出任意一个与该特征匹配的序列 a,或者判断该特征有误,不存在这样的序列。
输入格式
每个测试包含多组测试用例。第一行包含一个整数 t(1≤t≤104)——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤2×105)——丢失的序列 a 的长度。
第二行包含 n 个整数 r1,r2,…,rn(i≤ri≤n+1)——丢失序列 a 的特征。
保证所有测试用例中 n 的总和不超过 2×105。
输出格式
对于每个测试用例,输出如下内容:
- 如果不存在与特征 r 匹配的序列 a,输出 “No”。
- 否则,第一行输出 “Yes”,第二行输出任意一个满足特征 r 的整数序列 a1,a2,…,an(1≤ai≤n)。
你可以以任意大小写输出 “YES” 和 “NO”(例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定答案)。
输入输出样例
输入#1
5 3 2 3 4 5 2 3 5 4 6 1 1 3 1 3 4 8 3 6 6 6 8 9 9 9
输出#1
Yes 1 2 1 No Yes 1 No Yes 1 3 5 3 5 1 1 3
说明/提示
在第一个测试用例中,序列 a=[1,2,1] 是合适的。整数 1 和 2 分别出现在子区间 [1,2] 和 [2,3] 中。
在第二个测试用例中,可以证明不存在合适的序列 a。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?