题目描述
题目译自 XXII Olimpiada Informatyczna — II etap Trzy Wieże
Bajtocja 正饱受通货膨胀困扰,忧心忡忡的 Bajtazar 苦思如何保值资产。不幸的是,他被一则博彩广告吸引,决定投身赌注,押注足球比赛。
即将举行 n 场足球比赛,每场必有胜负(无平局)。单个赌注需预测全部 n 场比赛结果。若正确预测第 i 场比赛,胜方为第一队则获利 ai 拜托拉,第二队则获利 bi 拜托拉。错误预测无收益。赌注总收益为所有正确预测的收益之和。
Bajtazar 需从 z 个赌注中选择一个。第 i 个赌注包含预测序列 pi(长度 n)和价格 ki 拜托拉,其中 pi,j 为 0 表示第 j 场比赛预测第一队胜,为 1 表示第二队胜。赌注净收益为总收益减去价格。
Bajtazar 向你提供了所有赌注信息,并提出 q 个问题。第 i 个问题给出一个比赛结果序列 wi,其中 wi,j 为 0 表示第 j 场比赛第一队胜,为 1 表示第二队胜。你的任务是计算在 wi 结果下,选择任一赌注可获得的最大净收益,以及达成此收益的赌注数量。
输入格式
第一行包含一个整数 n (1≤n≤20),表示比赛场数。
第二行包含 n 个整数 a1,a2,…,an (0≤ai≤109),表示第一队胜的收益。
第三行包含 n 个整数 b1,b2,…,bn (0≤bi≤109),表示第二队胜的收益。
第四行包含一个整数 z (1≤z≤106),表示赌注数量。
接下来的 z 行,每行描述第 i 个赌注:一个长度 n 的 01 序列 pi(无空格),后跟整数 ki (0≤ki≤109)。
下一行包含一个整数 q (1≤q≤106),表示问题数量。
接下来的 q 行,每行包含一个长度 n 的 0 或 1 序列 wi(无空格),描述第 i 个问题的比赛结果。
输出格式
输出 q 行,第 i 行包含两个整数:第一个为在 wi 结果下任一赌注可获得的最大净收益,第二个为达成此收益的赌注数量。
样例
输入:
3
1 3 5
4 2 5
5
000 5
010 2
101 1
000 8
011 3
3
000
011
100
输出:
4 2
5 1
6 1
解释:
给定 a1=1, a2=3, a3=5,b1=4, b2=2, b3=5,赌注预测序列为 p1=000, p2=010, p3=101, p4=000, p5=011,价格为 k1=5, k2=2, k3=1, k4=8, k5=3。
-
问题 1:w1=000,各赌注净收益:
- 赌注 1:a1+a2+a3−k1=4
- 赌注 2:a1+a3−k2=4
- 赌注 3:a2−k3=2
- 赌注 4:a1+a2+a3−k4=1
- 赌注 5:a1−k5=−2
最大净收益 4,由赌注 1 和 2 达成,数量为 2。
-
问题 2:w2=011,赌注 5 净收益 a1+b2+b3−k5=5 为最大,数量为 1。
-
问题 3:w3=100,赌注 3 净收益 b1+a2−k3=6 为最大,数量为 1。
附加样例
- n=20, ai=1, bi=2, z=q=1000, ki=i,pi 和 wi 为从 00…0 开始的字典序序列。
- n=10, ai=bi=i, z=q=106, ki=23,pi 和 wi 为从 00…0 开始的循环字典序序列。
- n=17, ai=bi=109, z=q=105, ki=0,pi 和 wi 为从 11…1 开始的递减字典序序列。
- n=20, ai=bi=i−1, z=q=106, ki=109−i,pi 和 wi 为从 00…0 开始的字典序序列。
数据范围与提示
详细子任务附加限制及分值如下表所示。
| 子任务编号 |
附加限制 |
分值 |
| 1 |
z,q≤1000 |
10 |
| 2 |
n≤10 |
| 3 |
n≤17, z,q≤100000 |
40 |
| 4 |
无附加限制 |
若程序仅正确输出每对结果的第一个值(最大净收益),且第二个值在 32 位有符号整数范围内(int),可获测试 50% 分数。