B3873 [GESP202309 六级] 小杨买饮料 - 洛谷输入输出样例输入15 100 100 2000 2 50 4 40 5 30 3 20输出19输入25 141 100 2000 2 50 4 40 5 30 3 20输出2100输入34 141 2 50 4 40 5 30 3 20输出3no solution代码1#includebits/stdc.h using namespace std; int dp[510][2010]; int c[510],l[510]; int main(){ int n,L; cinnL; for(int i1;in;i) cinc[i]l[i]; memset(dp,0x7f,sizeof dp); for(int i0;i509;i) dp[i][0]0; for(int i1;in;i) for(int j1;jL;j) if(l[i]j) dp[i][j]min(c[i],dp[i-1][j]); else dp[i][j]min(c[i]dp[i-1][j-l[i]],dp[i-1][j]); if(dp[n][L]0x7f7f7f7f) coutno solution; else coutdp[n][L]; return 0; }代码2#includebits/stdc.h using namespace std; #define int long long int dp[510][2010]; int c[510],l1[510]; signed main(){ int n,l; cinnl; for(int i1;in;i) cinc[i]l1[i]; for(int i0;in;i) for(int j0;jl;j) dp[i][j]INT_MAX; for(int i0;in;i) dp[i][0]0; for(int i1;in;i) for(int j1;jl;j) if(l1[i]j) dp[i][j]min(c[i],dp[i-1][j]); else dp[i][j]min(c[i]dp[i-1][j-l1[i]],dp[i-1][j]); if(dp[n][l]INT_MAX) coutno solution; else coutdp[n][l]; return 0; }