题号:NC236615
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
牛牛在玩一款游戏。
牛牛有

个骑士,第

个骑士具有

个技能第

个技能的伤害是

需要的能量是

。
牛牛想要打败大魔王,大魔王的血量是

,只要牛牛的骑士对大魔王造成的伤害和大于等于(当所有骑士攻击结束后才结算伤害,不存在魔王中途死亡的情况)

那就认为牛牛战胜了大魔王。
在一个方案中,牛牛的每一个骑士都可以使用任意个技能(可以不出技能,但是每个技能最多只能被使用一次)。
现在牛牛想要知道自己有多少种击败魔王的方案,特别的,由于牛牛待会还要去挑战巨龙,所以
两种方案不同当且仅当所有骑士攻击完魔王后,至少存在一个骑士在两种方案中使用的能量总和不同。
你能告诉牛牛它有多少种不同的方案来击败魔王吗?由于方案数可能特别大,所以你只需要输出方案数模 998244353 之后的结果即可。
输入描述:
输入第一行两个整数代表
。
接下来共
行,每行描述了一个骑士的技能数和技能伤害以及技能需要消耗的能量。
第

行首先输入一个数代表

接下来输入

个数,前

个数代表这个骑士每个技能的伤害,后

个数代表这个骑士每个技能的能量消耗,这里的伤害和能量消耗是一一对应的。
保证:
输出描述:
输出一行一个整数代表牛牛不同的击败魔王的方案数模 998244353 之后的结果。
示例1
说明
共 4 种方案:
1.骑士出第一个技能;(能量消耗为 2,伤害为 2)
2.骑士出第二个技能;(能量消耗为 2,伤害为 3)
3.骑士出第一个和第二个技能;(能量消耗为 4,伤害为 5)
4.骑士不使用任何一个技能;(能量消耗为 0,伤害为 0)
依据题意能够击败魔王的方案是:1,2,3;
但是由于方案 1,2 的能量消耗量是相同的,所以看作是同一种方案,所以不同的方案数为:2。
示例2
输入
复制
3 4
2 1 2 1 2
2 2 1 2 2
1 1 1