CF618F.Double Knapsack

NOI/NOI+/CTSC

通过率:0%

时间限制:2.50s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given two multisets A and B. Each multiset has exactly n integers each between 1 and n inclusive. Multisets may contain multiple copies of the same number.

You would like to find a nonempty subset of A and a nonempty subset of B such that the sum of elements in these subsets are equal. Subsets are also multisets, i.e. they can contain elements with equal values.

If no solution exists, print  - 1. Otherwise, print the indices of elements in any such subsets of A and B that have the same sum.

给你两个多重集 AA 和 BB。每个多重集恰好包含 nn 个整数,且每个整数均在 11 到 nn(含)之间。多重集中可以包含相同数字的多个副本。

你需要找出 AA 的一个非空子集和 BB 的一个非空子集,使得这两个子集的元素之和相等。这里的子集本身也是多重集,即它们可以包含值相等的元素。

如果不存在这样的解,请输出 -1;否则,请输出任意一组满足条件的 AA 和 BB 的子集的元素下标。

输入格式

The first line of the input contains a single integer n (1 ≤ n ≤ 1 000 000) — the size of both multisets.

The second line contains n integers, denoting the elements of A. Each element will be between 1 and n inclusive.

The third line contains n integers, denoting the elements of B. Each element will be between 1 and n inclusive.

输入的第一行包含一个整数 nn(1≤n≤1 000 0001 \leq n \leq 1\,000\,000)——即两个多重集的大小。

第二行包含 nn 个整数,表示多重集 AA 的元素。每个元素均在 11 到 nn 之间(含端点)。

第三行包含 nn 个整数,表示多重集 BB 的元素。每个元素均在 11 到 nn 之间(含端点)。

输出格式

If there is no solution, print a single integer  - 1. Otherwise, your solution should be printed on four lines.

The first line should contain a single integer k__a, the size of the corresponding subset of A. The second line should contain k__a distinct integers, the indices of the subset of A.

The third line should contain a single integer k__b, the size of the corresponding subset of B. The fourth line should contain k__b distinct integers, the indices of the subset of B.

Elements in both sets are numbered from 1 to n. If there are multiple possible solutions, print any of them.

如果无解,输出一个整数 −1-1。否则,你的解应分四行输出。

第一行应包含一个整数 kak_a,表示集合 AA 中对应子集的大小。第二行应包含 kak_a 个互不相同的整数,表示集合 AA 中该子集的下标。

第三行应包含一个整数 kbk_b,表示集合 BB 中对应子集的大小。第四行应包含 kbk_b 个互不相同的整数,表示集合 BB 中该子集的下标。

两个集合中的元素均从 11 编号至 nn。若存在多个可行解,输出任意一个即可。

输入输出样例

  • 输入#1

    10
    10 10 10 10 10 10 10 10 10 10
    10 9 8 7 6 5 4 3 2 1

    输出#1

    1
    2
    3
    5 8 10
  • 输入#2

    5
    4 4 3 3 3
    2 2 2 2 5

    输出#2

    2
    2 3
    2
    3 5

输入解题思路,AI测评打分。不知道怎么写?

首页