礼物

题目描述

圣诞节快到了,\(Smart\)开始思考给他的儿子们送礼物的事情。

\(Smart\)\(m\)个儿子,由于 Steam 游戏常常打折,他决定给他们买 Steam 游戏作为礼物。

Steam 的打折游戏非常多,你可以认为有无数件,\(Smart\) 根据价格将它们分成了\(n\)类,每一类的价格为 \(p_i\)

他的每个儿子给出了一个幸运数字 \(a_i\),表示他希望得到价值和为 \(a_i\) 的游戏。

作为一个优秀的父亲,\(Smart\) 当然想要尽可能地满足所有儿子的要求,于是他想知道能满足多少个儿子的要求。

输入格式

输入第一行为两个整数 \(n, m\)

第二行 \(n\) 个整数 \(p_i\),表示商品价格。

第三行 \(m\) 个整数 \(a_i\),表示每个儿子的要求。

输出格式

输出一行一个整数表示能满足的要求数。

输入样例

3 4
24 48 100
0 520 1024 1314

输出样例

3

说明/提示

\(30\%\) 的数据:\(n≤10, m≤100, 0<p_i≤50, 0≤a_i≤2×10^5\)

\(60\%\) 的数据:\(n≤100, 0<p_i≤200\)

另外 \(10\%\) 的数据:\(n=2\)

\(100\%\) 的数据:\(n≤500, m≤300000, 0<p_i≤10000, 0≤a_i≤4×10^7\)

Analysis:

完全背包问题:

\[统计有多少个 a_i 满足:在 a_i(1<=i<=n) 中选,价值和恰好为 a_i \]

朴素做法:\(O(n*a_{max})\)

最短路优化:\(O(?)\)

Code

posted @ 2022-10-03 20:32  FighterQ  阅读(29)  评论(0)    收藏  举报