有价值为1~6的宝物各num[i]个,求是否能分成价值相等的两部分。
#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #define ll long long #define mod 1000000007 using namespace std; int dp[120010],num[10],v; void pack01(int c,int w) { for(int i=v;i>=c;i--) dp[i]=max(dp[i],dp[i-c]+w); } void packall(int c,int w) { for(int i=c;i<=v;i++) dp[i]=max(dp[i],dp[i-c]+w); } void mulpack(int c,int w,int n) { if(c*n>=v) packall(c,w); else { int i=1; while(i