和以前做的差不多
n《=10 很容易忘状态压缩那里想
预处理一下 哪几个物品可以一次运完 可以的话用一个二进制表示 并且dp[state] = 1 表示一次就可以
然后平常那样做状态压缩DP就行了
#include#include #include #include using namespace std; const int maxn = 12; const int INF = 999999999; int n, m1, m2; int a[maxn]; int b[1< = a[i]; j--) d[j] |= d[j-a[i]]; } } for(int i = 0; i <= m1; i++) { if(d[i] && sum-i <= m2) return true; } return false; } int main() { int cas = 1; int T; scanf("%d", &T); while(T--) { scanf("%d %d %d", &n, &m1, &m2); for(int i = 0; i < n; i++) scanf("%d", &a[i]); int l = 0; for(int i = 1; i < (1<