垃圾yazid毁我青春费我钱财
这题不难就是题面太长概念太多,根本记不住什么变量是什么变量
稍微转化一下发现蓝阵营和鸭派系的人数必须在一个区间当中
如果k=0显然两维相互独立直接背包乘起来就行了
如果k不等于0那么受影响的城市体积之和少于2500,受影响的学校体积之和小于300
那么设\(dp(i,j)\)表示在蓝阵营有体积和为i的被影响城市,鸭派系有体积和为j的被影响学校时
的方案数是什么
转移的时候需要把枚举每个受影响的城市选择哪个阵营,然后跑一个小的背包用来计算城市中的学校选择派系的方案数
有了小的背包数组就可以更新dp数组了
这部分的复杂度是\(O(ms^2k^2)\)的
剩下的部分就很简单了,对于剩下的城市和人分别跑个背包就行了
\(O(nm)\)
然后枚举受影响的城市中有几个选择了蓝阵营,受影响的学校中有几个选择了鸭派系
然后此时在另外两个背包数组上查一下区间和就能解决问题了
总复杂度\(O(nm+ms^2k^2)\)
// luogu-judger-enable-o2#include #include #include