Universal Cup Judging System

Universal Cup

حد الوقت: 2.0 s حد الذاكرة: 1024 MB مجموع النقاط: 100 قابلة للهجوم ✓
الإحصائيات

在计算机科学中,0/1 背包问题是一个经典的挑战:给定一组物品,每个物品都有重量和价值,选择一个物品子集,使得总重量不超过给定的限制,且总价值尽可能大。

这个问题是 NP-hard 的。当重量范围相对较小时,可以使用著名的动态规划算法精确求解。然而,当重量和价值的范围都非常大时(例如达到 $10^9$),则需要启发式方法来获得较好的(但不一定是最优的)解。

两位研究人员 Alice 和 Bob 正在研究简单且快速的“启发式”算法,这些算法在处理此类大规模背包问题实例时能提供不错的结果。他们每个人都使用了一种贪心策略:

  • Alice 的策略:最轻优先 (Lightest First)。Alice 希望让背包尽可能轻。她将所有物品按重量升序排序。如果两个物品重量相同,她按原始索引升序打破僵局。然后她选取该排序列表的前缀:她逐个选取物品,直到按顺序排列的下一个物品无法放入剩余容量为止。
  • Bob 的策略:最高价值优先 (Best Value First)。Bob 希望获得最大的价值。他将所有物品按价值降序排序。如果两个物品价值相同,他按原始索引升序打破僵局。然后他遍历此列表。对于每个物品,如果它能放入剩余容量中,他就选取它;否则,他跳过该物品并继续处理后续物品。

现在,Alice 和 Bob 得到了一个包含 n 个物品的数据集(索引从 $1$ 到 $n$)和一个容量为 $W$ 的背包。然而,部分数据缺失了。对于每个物品,其重量 $w_i$ 和价值 $r_i$ 均已给出,但每个物品最多只有一个数值可能是未知的。

你的任务是为每个未知数值分配一个正整数,使得 Alice 选择的物品集合与 Bob 选择的物品集合完全相同(不考虑选择的顺序)。

输入格式

第一行包含一个整数 $T$ ($1\leq T\leq 100$),表示测试用例的数量。

对于每个测试用例:

第一行输入两个整数 $n,W$ ($1\leq n\leq 3000, 1\leq W\leq 10^9$),分别表示物品数量和背包容量。

第二行包含 n 个整数 $w_1, w_2, \cdots, w_n$ ($0\leq w_i\leq 10^9$),表示物品的重量。如果 $w_i=0$,则该参数未知。

第三行包含 n 个整数 $r_1, r_2, \cdots, r_n$ ($0\leq r_i\leq 10^9$),表示物品的价值。如果 $r_i=0$,则该参数未知。保证对于每个物品,最多只有一个数值未知。

保证所有测试用例的 $\sum n\leq 3000$。

输出格式

对于每个测试用例,如果存在一种合法的正整数分配方案,使得 Alice 和 Bob 选择的物品集合相同,则在第一行打印 Yes。然后在第二行打印所有 $w_i$ ($1\leq w_i\leq 10^9$),第三行打印所有 $r_i$ ($1\leq r_i\leq 10^9$),中间用空格分隔,表示一种可能的合法赋值。否则,在单行内打印 No

请注意,$w_i$ 和 $r_i$ 的最大限制均为 $10^9$,与输入限制相同。YesNo 是不区分大小写的。

样例

输入 $1$

6
3 5
0 2 3
2 4 0
3 5
2 3 0
4 0 2
3 1000000000
0 0 1000000000
2 3 1
5 1
0 1 1 1 0
3 8 0 7 9
5 1000000000
0 0 0 1 0
1 9 3 9 10
3 1000000000
500000001 500000000 0
1000000000 999999998 1

输出 $1$

Yes
3 2 3
2 4 1
Yes
2 3 2
4 1 2
Yes
1000000000 999999999 1000000000
2 3 1
Yes
1000000000 1 1 1 1000000000
3 8 1 7 9
Yes
1000000000 1000000000 1000000000 1 999999999
1 9 3 9 10
No

提示

对于第一个样例测试用例,Alice 依次选择了第二个物品和第一个物品;Bob 也选择了第二个物品和第一个物品。

对于第二个样例测试用例,Alice 和 Bob 都选择了第一个和第三个物品。

对于最后一个样例测试用例,不存在解决方案。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1796EditorialOpenNew Editorial for Problem #14713ZnPdCo2026-05-22 17:22:16View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.