#P9140. [THUPC 2023 初赛] 背包

[THUPC 2023 初赛] 背包

题目描述

本题中,你需要解决完全背包问题。

nn 种物品,第 ii 种物品单个体积为 viv_i、价值为 cic_i

qq 次询问,每次给出背包的容积 VV,你需要选择若干个物品,每种物品可以选择任意多个(也可以不选),在选出物品的体积的和恰好VV 的前提下最大化选出物品的价值的和。你需要给出这个最大的价值和,或报告不存在体积和恰好为 VV 的方案。

为了体现你解决 NP-Hard 问题的能力,VV 会远大于 viv_i,详见数据范围部分。

输入格式

第一行两个整数 n,qn,q,表示物品种数和询问次数。

接下来 nn 行每行两个整数 vi,civ_i,c_i 描述一种物品。

接下来 qq 行每行一个整数 VV 描述一次询问中背包的体积。

输出格式

对于每组询问输出一行一个整数。若不存在体积和恰好为 VV 的方案,输出 -1;否则输出最大的选出物品的价值和。

2 2
6 10
8 15
100000000001
100000000002

-1
187500000000

提示

样例解释 1

第二组询问的最优方案为:选择 33 个物品 111249999999812499999998 个物品 22

子任务

对于所有测试数据,$1 \le n \le 50, 1 \le v_i \le 10^5, 1 \le c_i \le 10^6, 1 \le q \le 10^5, 10^{11} \le V \le 10^{12}$。

题目来源

来自 2023 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2023)初赛。

题解等资源可在 https://github.com/THUSAAC/THUPC2023-Pre 查看。