题目连接 hdu or vj
题意
求 最小价值
题解
数量不限, 那么完全背包问题板子直接上, 不过这个是求的最小价值
代码
#include
using namespace std; #define rg register #define sc scanf #define pf printf typedef long long ll; const int maxn = 5e2+100; const int maxm = 1e5+100; int wei[maxn], val[maxn], dp[maxm]; const int INF = 0x3f3f3f3f; int main ( ) {
// freopen( "F:\\in\\.txt" , "r" , stdin ); int T, n, pack_empty, pack_full; sc( "%d", &T ); while ( T-- ) {
memset( dp, INF, sizeof(dp) ); dp[0] = 0; // 重量为 0 时价值为 0 sc( "%d%d", &pack_empty, &pack_full ); sc( "%d", &n ); for ( int i = 0; i < n; ++i ) {
sc( "%d%d", &val[i], &wei[i]); } int m = pack_full-pack_empty; for( int i = 0; i < n; ++i ){
for( int j = wei[i]; j <= m; ++j ) {
dp[j] = min( dp[j] , dp[j-wei[i]]+val[i] ); } } dp[m] != INF ? pf( "The minimum amount of money in the piggy-bank is %d.\n", dp[m] ) : puts( "This is impossible." ); } return 0 ; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224516.html原文链接:https://javaforall.net
