AT_arc215_b [ARC215B] Stolen Necklace

题目描述

有 $2N$ 个宝石按从左到右排成一行,第 $i$ 个宝石的类型为 $A_i$。这里,$A_i$ 是一个 $1$ 到 $N$ 之间的整数,并且每种类型的宝石恰好有两个。 你需要插入若干分隔符,满足以下条件: - 每个分隔符的位置由整数 $i$ 表示($1 \leq i \leq 2N-1$),即分割在第 $i$ 个和第 $(i+1)$ 个宝石之间。 - 同一位置不能有两个或更多分隔符。 - 分隔符的数量 $K$ 不超过 $N$。 - 插入 $K$ 个分隔符后,宝石被分为 $K + 1$ 段。把所有奇数段(从左到右的第 1、3、5、……段)中的宝石取出来,恰好能得到每种类型 $1, 2, \ldots, N$ 的各一个宝石。 请输出一种满足条件的分隔符插入方式。可以证明一定存在这种分隔方式。 你将获得 $T$ 组测试数据。请解决每组数据。

输入格式

输入按下述格式从标准输入读入: > $T$ > $\text{case}_1$ > $\text{case}_2$ > $\vdots$ > $\text{case}_T$ 每组测试数据格式如下: > $N$ $A_1$ $A_2$ $\ldots$ $A_{2N}$

输出格式

按顺序分别输出 $T$ 组测试数据的答案。 对于每组测试数据,输出一种满足条件的分隔符插入方式。具体来说,令 $K$ 为分隔符的数量,$C_1, C_2, \ldots, C_K$ 表示分隔符的位置(严格递增),输出如下格式: > $K$ $C_1$ $C_2$ $\ldots$ $C_K$ 这里 $K$ 必须不超过 $N$。

说明/提示

### 样例解释 1 对于第一组数据,把分隔符插在 $1, 2, 4$ 处,会把宝石分成如下各段 $(1),(2),(2,3),(3,1)$,收集所有奇数段的宝石后,恰好得到每种类型 $1,2,3$ 的各一个宝石。 ### 约束条件 - $1 \leq T \leq 10^5$ - $1 \leq N \leq 2\times 10^5$ - $1 \leq A_i \leq N$($1 \leq i \leq 2N$) - 每种类型的宝石恰好有 2 个。即对于每个 $x$($1 \leq x \leq N$),恰好存在两个下标 $i$ 满足 $A_i=x$。 - 所有测试数据的 $N$ 之和不超过 $2 \times 10^5$。 - 所有输入值均为整数。 由 ChatGPT 5 翻译