#P9818. 游戏王
游戏王
题目背景
本题已经增加 hack 数据。hack 数据位于 subtask 7,记 0 分。此外本题时限较大数据点较多,希望各位不要滥用评测资源。
你正在打块,突然家长走了进来,于是你假装在玩原神。
题目描述
你改造了原神的抽卡系统。
具体而言,在第 次抽卡时,系统将会给出一个可重集合 ,表示这次抽卡中可供选择的角色。第 个角色有两个属性:力量值 与魔力值 。你可以从中选择一名角色,并将其加入到自己的背包中;当然,你也可以不做任何选择。你的力量值被定义为背包中所有角色的力量值之和,同时你需要时刻保证背包中角色的魔力值之积不超过魔力上限 。你的任务是最大化自己的力量值。
但是,你很快就厌烦了千篇一律的抽卡。为了给生活找点乐子,你想到了这样的问题:如果游戏从第 次抽卡开始,到第 次抽卡结束,你的力量值最大是多少呢?
你一口气提出了 个这样的问题。现在,你需要计算出它们的答案。
形式化题意:
给出一个长为 的序列 ,其中 为多个二元组 构成的可重集。有 次询问,每次给定 ,你需要从 的每个集合中分别选出 个或 个二元组。记选出的 个二元组为 ,则你需要在保证 的基础上,最大化 。
输入格式
输入的第一行包含两个正整数 。
接下来 行,每行首先读入 ,接下来读入 对正整数 ,即 中每一角色的力量值与魔力值。
随后一行,读入一个正整数 。
接下来 行,每行两个正整数 ,表示一次询问。注意询问间两两独立,即每次询问都将被视作一次新的游戏。
输出格式
输出共 行。对于每次询问,输出你的体力值的最大值。
4 10
2 2 1 5 9
1 5 3
3 2 1 2 1 3 3
1 3 1
5
3 3
2 3
1 4
2 4
3 4
3
8
13
11
6
提示
样例解释
对于第一组询问,最优策略是从 中选择 。此时你的能力值为 。
对于第三组询问,最优策略是从 中选择 , 中选择 , 中选择 , 中选择 ,此时魔力值之积等于 ,你的能力值等于 。
数据范围与约定
本题使用子任务捆绑测试,只有通过子任务内全部测试点才可以获得该子任务的相应分数。
记 。
- 子任务 1(5 分):保证 。
- 子任务 2(20 分):保证 。
- 子任务 3(15 分):保证所有 在范围内均匀随机生成。
- 子任务 4(20 分):保证 。
- 子任务 5(15 分):保证对于所有询问,均有 或者 。
- 子任务 6(25 分):无特殊限制。
对于所有数据,保证 ,,,,。