提交时间:2024-05-11 21:57:44

运行 ID: 146476

# include <bits/stdc++.h> using namespace std ; int dp [10001] ; int w [501] , v [501] ; int main ( ) { int t ; cin >> t ; while ( t -- ) { memset ( dp , 0x3f3f3f3f , sizeof ( dp ) ) ; memset ( w , 0 , sizeof ( w ) ) ; memset ( v , 0 , sizeof ( v ) ) ; int e , f , n ; cin >> e >> f >> n ; f -= e ; for ( int i = 1 ; i <= n ; i ++ ) { cin>>v[i]>>w[i]; } dp [0] = 0 ; for ( int i = 1 ; i <= n ; i ++ ) { for ( int j = w [i] ; j <= f ; j ++ ) { if ( dp [j - w [i]] != 0x3f3f3f3f ) { dp [j] = min ( dp [j] , dp [j - w [i]] + v [i] ) ; } } } if ( dp [f] - 0x3f3f3f3f ) { cout << "The minimum amount of money in the piggy-bank is " << dp [f] << '.' << endl ; } else { cout << "This is impossible." << endl ; } } return 0 ; }