rqnoj-160-竞赛真理-分组背包问题
简单的分组背包问题~~
#include<string.h>#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int dp[1100000];int main(){ int n,t,i,w1,w2,t1,t2; while(~scanf("%d%d",&n,&t)) { while(n--) { scanf("%d%d%d%d",&w1,&t1,&w2,&t2); for(i=t;i>=0;i--) { if(i>=t1)dp[i]=max(dp[i],dp[i-t1]+w1); if(i>=t2)dp[i]=max(dp[i],dp[i-t2]+w2); } } cout<<dp[t]<<endl; } return 0;}