01背包空间优化
#pragma GCC optimize(2) #pragma GCC optimize(1) #include<bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; const ull base=131; #define MAX 1009 #define PI 3.141592653589793 using namespace std; int f[MAX],bb[MAX][2]; int m,n; int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>bb[i][0]>>bb[i][1]; for(int i=1;i<=n;i++){ for(int j=m;j>=bb[i][0];--j){ f[j]=max(f[j],f[j-bb[i][0]]+bb[i][1]); } } cout<<f[m]<<endl; }
#pragma GCC optimize(2) #pragma GCC optimize(1) #include<iostream> #include<queue> #include<vector> typedef long long ll; typedef unsigned long long ull; const ull base=131; #define MAX 1009 #define PI 3.141592653589793 using namespace std; int f1[MAX],f2[MAX],bb[MAX][2]; int m,n; int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>bb[i][0]>>bb[i][1]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(j<bb[i][0]) f2[j]=f1[j]; else f2[j]=max(f1[j],f1[j-bb[i][0]]+bb[i][1]); } memcpy(f1,f2,sizeof(f2)); } cout<<f2[m]<<endl; }