礼物
题目描述
圣诞节快到了,\(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