QOJ.ac

QOJ

Limite de temps : 1.5 s Limite de mémoire : 256 MB Points totaux : 100

#4308. 模背包问题

Statistiques

今天你需要解决一个不同寻常的背包问题。给定 $n$ 个物品,第 $i$ 个物品的重量为 $w_i$,价值为 $c_i$。此外,给定一个质数 $p$。对于每个模 $p$ 的余数 $r$,你需要找到一个物品集合,使得该集合中物品的总重量模 $p$ 的余数为 $r$,且总价值最大。除了样例之外,每个测试点中的所有重量和价值都是在范围 $[0, 10^9]$ 内随机且独立地选择的。$n$ 和 $p$ 是手动选定的。

输入格式

第一行包含两个整数 $n, p$ ($1 \le n \le 10^6, 2 \le p \le 3000$),分别表示物品的数量和质数模数。 第二行包含 $n$ 个整数 $w_i$ ($0 \le w_i \le 10^9$),表示物品的重量。 第三行包含 $n$ 个整数 $c_i$ ($0 \le c_i \le 10^9$),表示物品的价值。

输出格式

输出一行,包含 $p$ 个整数。其中第 $i$ 个数(从 $0$ 开始索引)应等于总重量模 $p$ 的余数为 $i$ 的物品集合的最大总价值,如果不存在这样的集合,则输出 $-1$。

样例

样例输入 1

2 2
1 2
1 1

样例输出 1

1 2

样例输入 2

2 2
2 2
1 1

样例输出 2

2 -1

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.