Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <algorithm>using namespace std;const int MAXN=100050;long long ans=0;int n,m,k,t,a[105],b[105];int bo=1;int dp[105][10550];int ma=0;int DP(){memset(dp,0,sizeof(dp));for(int i=1;i<=m;i++){if(b[i]==0)continue;for(int j=0;j<=k+ma;j++){if(j-b[i]>=0&&dp[i-1][j]!=0){dp[i][j]=min(dp[i][j-b[i]]+a[i],dp[i-1][j]);}else if(j-b[i]>=0&&dp[i-1][j]==0)dp[i][j]=dp[i][j-b[i]]+a[i];elsedp[i][j]=dp[i-1][j];}}int A=0x7f;for(int j=1;j<=m;j++){if(dp[j][k]!=0)A=min(dp[j][k],A);