CF2086C.Disappearing Permutation
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
一个从 1 到 n 的整数排列是指一个大小为 n 的数组,其中每个从 1 到 n 的整数恰好出现一次。
给定一个从 1 到 n 的排列 p。你需要处理 n 个查询。在第 i 次查询中,你将 pdi 替换为 0。每个元素恰好会被替换为 0 一次。查询中的修改会被保留,也就是说,在第 i 次查询后,所有整数 pd1,pd2,…,pdi 都会变为 0。
在每次查询后,你需要找到修复数组所需的最少操作次数;换句话说,将当前数组转换为从 1 到 n 的任意排列(可能是原始排列 p,也可能是其他排列)。
修复数组的操作如下:
- 选择一个从 1 到 n 的整数 i,将数组的第 i 个元素替换为 i。
注意,每个查询的答案是独立计算的,这意味着你实际上不会执行任何操作,只是计算最少操作次数。
输入格式
每个测试包含多个测试用例。第一行包含一个整数 t(1≤t≤104)——测试用例的数量。接下来是测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤105)。
第二行包含 n 个整数 p1,p2,…,pn(1≤pi≤n)——原始排列。所有 pi 互不相同。
第三行包含 n 个整数 d1,d2,…,dn(1≤di≤n)。所有 di 互不相同。
输入数据的额外限制:
- 所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,输出一行包含 n 个整数,其中第 i 个整数表示在第 i 次查询后(即排列 p 中所有整数 pd1,pd2,…,pdi 被替换为 0 后)修复数组所需的最少操作次数。
输入输出样例
输入#1
3 3 1 2 3 3 2 1 5 4 5 3 1 2 4 5 1 3 2 7 4 3 1 2 7 5 6 1 2 3 4 5 6 7
输出#1
1 2 3 2 4 4 5 5 4 4 4 4 7 7 7
说明/提示
- 在第一个测试用例中,每次查询后,每个被替换为 0 的整数都可以通过一次操作恢复。
- 在第二个测试用例中,可以按以下方式操作:
- 查询 1:p=[4,5,3,0,2],可以转换为 [1,5,3,4,2]。
- 查询 2:p=[4,5,3,0,0],可以转换为 [1,2,3,4,5]。
- 查询 3:p=[0,5,3,0,0],可以转换为 [1,2,3,4,5]。
- 查询 4:p=[0,5,0,0,0],可以转换为 [1,2,3,4,5]。
- 查询 5:p=[0,0,0,0,0],可以转换为 [1,2,3,4,5]。
标红的数字表示被修改的元素。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?