题目描述
小 ℶ 为了纪念停办的 codejam,准备了一场“代码堵塞纪念赛”。小 ℶ 的朋友小 ℧ 也来围观,于是小 ℶ 想预测小 ℧ 的成绩。
比赛共 T 秒,有 n 道题。第 i(1≤i≤n) 题分数为 ai,小 ℶ 预测小 ℧ 需要 ti 秒完成。
题目有两种类型:结果可见和结果不可见。结果不可见的题在比赛结束后才能知道评测结果,而结果可见的题在提交后立即得到评测结果。小 ℶ 还没确定每道题的类型。
小 ℧ 由于从不写对拍,所以会先按编号从小到大完成所有结果可见的题,再按编号从小到大完成所有结果不可见的题。小 ℧ 会花 ti 秒完成第 i 题,当小 ℧ 花费在第 i 题和在第 i 题之前完成的所有题的时间总和不超过 T,就会在第 i 题产生提交。
由于小 ℧ 提交即 AC,所以小 ℶ 想知道对于所有 2n 种确定 n 道题类型的方案,小 ℧ 所能得到的分数总和的和。由于答案很大,你需要将答案对 998244353 取模。
输入格式
输入的第一行包含三个整数 c,n,T,表示测试点编号,题数和比赛时间。样例中的 c 表示其满足的限制条件与第 c 个测试点一致。
输入的第二行包含 n 个整数 a1,a2,⋯,an,分别表示每道题的分数。
输入的第三行包含 n 个整数 t1,t2,⋯,tn,分别表示小 ℧ 做每道题的时间。
输出格式
输出一行包含一个整数,表示对于所有确定 n 道题类型的方案,小 ℧ 所能得到的分数总和的和,对 998244353 取模。
1 3 3
2 3 4
1 2 2
40
提示
样例 1 解释
我们用长度为 3 的 01 序列表示题目类型,1 表示结果可见,0 表示结果不可见。
- (0,0,0)(1,0,0)(1,1,0)(1,1,1) 四种情况:小 ℧ 按照编号顺序做题,前两题产生提交,分数和为 5;
- (0,1,0):小 ℧ 按照 213 的顺序做题,前两题产生提交,分数和为 5;
- (0,0,1):小 ℧ 按照 312 的顺序做题,第一题和第三题产生提交,分数和为 6;
- (1,0,1):小 ℧ 按照 132 的顺序做题,第一题和第三题产生提交,分数和为 6;
- (0,1,1):小 ℧ 按照 231 的顺序做题,只有第二题产生提交,分数和为 3。
因此答案为 (5×4+5+6+6+3)mod998244353=40。
数据范围
对于所有测试数据:
- 1≤n≤200,
- 1≤T≤3×105,
- ∀1≤i≤n,1≤ai≤3×105,
- ∀1≤i≤n,1≤ti≤T。
测试点编号 |
n≤ |
T≤ |
特殊性质 A |
特殊性质 B |
1∼4 |
15 |
102 |
否 |
5∼7 |
200 |
3×105 |
是 |
是 |
8,9 |
否 |
10∼13 |
否 |
是 |
14∼16 |
50 |
103 |
否 |
17,18 |
102 |
104 |
19,20 |
200 |
3×105 |
- 特殊性质 A:∀1≤i≤n,ai=1。
- 特殊性质 B:∀1≤i≤n,ti=1。
后记
“你们这比赛怎么所有题都结果不可见啊?”