CF1363D.Guess The Maximums
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
This is an interactive problem.
Ayush devised a new scheme to set the password of his lock. The lock has k slots where each slot can hold integers from 1 to n. The password P is a sequence of k integers each in the range [1,n], i-th element of which goes into the i-th slot of the lock.
To set the password of his lock, Ayush comes up with an array A of n integers each in the range [1,n] (not necessarily distinct). He then picks k non-empty mutually disjoint subsets of indices S1,S2,...,Sk (Sii=j∩Sj=∅) and sets his password as Pi=j∈/SimaxA[j]. In other words, the i-th integer in the password is equal to the maximum over all elements of A whose indices do not belong to Si.
You are given the subsets of indices chosen by Ayush. You need to guess the password. To make a query, you can choose a non-empty subset of indices of the array and ask the maximum of all elements of the array with index in this subset. You can ask no more than 12 queries.
这是一个交互式问题。
Ayush 设计了一种新的锁密码设置方案。该锁有 k 个槽位,每个槽位可存储 1 到 n 之间的整数。密码 P 是一个长度为 k 的整数序列,其中每个元素均在区间 [1,n] 内,第 i 个元素填入锁的第 i 个槽位。
为设置锁的密码,Ayush 构造了一个长度为 n 的数组 A,其中每个元素均在区间 [1,n] 内(元素不一定互异)。接着,他选取 k 个非空且两两不相交的下标子集 S1,S2,…,Sk(即对任意 i=j,有 Si∩Sj=∅),并按如下方式设定密码:Pi=j∈/SimaxA[j]。换言之,密码的第 i 个整数等于数组 A 中所有下标不属于 Si 的元素的最大值。
你已知 Ayush 所选的这些下标子集。你需要猜出密码。每次查询时,你可以选择数组的一个非空下标子集,并询问该子集中所有下标对应的数组元素的最大值。你至多可进行 12 次查询。
输入格式
The first line of the input contains a single integer t (1≤t≤10) — the number of test cases. The description of the test cases follows.
The first line of each test case contains two integers n and k (2≤n≤1000,1≤k≤n) — the size of the array and the number of subsets. k lines follow. The i-th line contains an integer c (1≤c<n) — the size of subset Si, followed by c distinct integers in the range [1,n] — indices from the subset Si.
It is guaranteed that the intersection of any two subsets is empty.
输入的第一行包含一个整数 t(1≤t≤10)——测试用例的数量。接下来是各测试用例的描述。
每个测试用例的第一行包含两个整数 n 和 k(2≤n≤1000,1≤k≤n)——数组的大小以及子集的数量。随后是 k 行。第 i 行首先是一个整数 c(1≤c<n)——子集 Si 的大小,接着是 c 个互不相同的整数,取值范围为 [1,n]——即子集 Si 中的下标。
保证任意两个子集的交集为空。
输入输出样例
输入#1
1 4 2 2 1 3 2 2 4 1 2 3 4 Correct
输出#1
? 1 1 ? 1 2 ? 1 3 ? 1 4 ! 4 3
说明/提示
The array A in the example is [1,2,3,4]. The length of the password is 2. The first element of the password is the maximum of A[2], A[4] (since the first subset contains indices 1 and 3, we take maximum over remaining indices). The second element of the password is the maximum of A[1], A[3] (since the second subset contains indices 2, 4).
Do not forget to read the string "Correct" / "Incorrect" after guessing the password.
示例中的数组 A 为 [1,2,3,4]。密码长度为 2。密码的第一个元素是 A[2] 与 A[4] 的最大值(因为第一个子集包含下标 1 和 3,故在剩余下标上取最大值);密码的第二个元素是 A[1] 与 A[3] 的最大值(因为第二个子集包含下标 2、4)。
猜测密码后,切勿忘记读取字符串 "Correct" / "Incorrect"。
输入解题思路,AI测评打分。不知道怎么写?