和以前做的差不多
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<