信息加密

题目背景

世界的全球化与科技进步离不开网络的普及。然而,普惠万家的网络也可能成为违法犯罪的温床。如果使用网络时不进行恰当的加密和保密,就等同于在大街上裸奔,个人信息将被不法分子窃取。即使对传输的信息进行了充分的保护,内容在传输过程中仍然可能被黑客干扰和损坏。

我国明确规定,个人的通信自由和秘密受法律保护。在各机构、组织与机关的配合下,我们接触到的网络世界已经有了高高的围墙。但即使有了较为完善的保护措施,我们仍需谨慎触网、恰当上网。

题目描述

在本题中,所有信息都可以由 (l,v)(l, v) 表示,意思是该信息的长度为 ll,价值为 vv。这些信息具有可加性。将两个信息 (li,vi),(lj,vj)(l_i, v_i), (l_j, v_j) 拼接在一起,会得到信息 (li+lj,vi+vj)(l_i + l_j, v_i + v_j)

相传有一个比较好的加密方式就是,把想要传输的数据复制两份,然后在将它们断开成若干段,之后加入一些干扰数据,分别发送过去。当对方接受之后,只需要找出能用两种方式拼出来的数据,就可以还原出发送者的意图。

具体的,假设我们有一个想要传输的信息 S=(L,V)S = (L, V),我们找到两组 $(l_i, v_i)_{i = 1, \dots, n}, (l'_j, v'_j)_{j = 1, \dots, m}$,满足这 nn(li,vi)(l_i, v_i) 拼接得到 SS,这 mm(lj,vj)(l'_j, v'_j) 拼接得到 SS。之后,我们再添加 kk 个干扰项 (l,v)(l, v)(可以是任意信息),最后将所有 n+m+kn + m + k 个信息一同发送。

然而,你作为信息的接收者,你怀疑数据遭到了黑客的干扰,导致无法选出两组 (li,vi),(lj,vj)(l_i, v_i), (l'_j, v'_j) 来还原出 SS。所以你需要编写一个程序来判断是否遭到了黑客干扰。

如果你不能还原出 SS,则输出 yes,说明遭到了干扰。否则,输出 no,并且还原出一个恰当的 SS

输入格式

第一行一个正整数 nn,表示你接收到的信息的数量。

接下来 nn 行,每行两个整数 li,vil_i, v_i,表示你接收到了一条长度、价值分别为 li,vil_i, v_i 的信息。

输出格式

第一行一个字符串。若遭到了干扰导致信息无法还原,输出 yes。若没有被攻击并且能够还原,输出 no

如果能够还原,你还要给出构造。具体的,你需要输出两行,每一行表示一个 SS 的组成方案。

在一个组成方案中,你需要先输出 kk,表示该方案使用的信息个数。后面再接 kk 个整数,表示信息对应的编号(输入中的顺序)。

你需要保证两个组成方案能得到相同的 SS,并且,同一条信息不能同时出现在两个组成方案中。

如果有多种解法,可以输出任意一种,毕竟传达的信息可能会有多种意思。

样例

5
1 -3
1 1
2 -1
3 1
3 2
no
2 3 4
3 1 2 5
3
1 1
2 2
3 -3
yes

说明/提示

对于第一个样例,信息可以由 (2,1)+(3,1)=(1,3)+(1,1)+(3,2)(2, -1) + (3, 1) = (1, -3) + (1, 1) + (3, 2) 两种方案组成,说明没有遭到黑客的干扰。两种方案对应的编号为 [3,4],[1,2,5][3, 4], [1, 2, 5]

对于第二个样例,我们无法用两种方法组成相同的 SS,说明遭到了黑客的干扰,输出 yes


对于所有的数据,2n2122 \le n \le 2^{12}。单个信息的长度 ll 满足 1l2121 \le l \le 2^{12},信息的价值 vv 满足 0v2120 \le |v| \le 2^{12}

注意信息的价值可能为负。

国庆提高/省选组比赛

Attended
Status
Live... (Attended)
Rule
IOI
Problem
40
Start at
2025-10-15 19:32
End at
2025-11-16 0:00
Duration
1104 hour(s)
Host
Partic.
85