p2725 Stamps
背包。
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <iomanip> #include <cstring> #include <map> #include <queue> #include <set> #include <cassert> #include <stack> #include <bitset> #define mkp make_pair using namespace std; const double EPS=1e-8; typedef long long lon; const lon SZ=2000030,INF=0x7FFFFFFF,mod=9901; int dp[SZ],arr[SZ]; int main() { std::ios::sync_with_stdio(0); //freopen("d:\\1.txt","r",stdin); lon casenum; //cin>>casenum; //for(lon time=1;time<=casenum;++time) { int k,n; cin>>k>>n; for(int i=1;i<=n;++i)cin>>arr[i]; for(int i=0;i<SZ;++i)dp[i]=INF; dp[0]=0; for(int i=1;i<=n;++i) { for(int j=1;j<=SZ;++j) { if(j>=arr[i]&&dp[j-arr[i]]!=INF) { dp[j]=min(dp[j],dp[j-arr[i]]+1); } } } int res=0; for(int i=1;i<SZ;++i) { //cout<<i<<endl; if(dp[i]>k) { cout<<i-1<<endl; return 0; } } } return 0; }