PIPIOJ 1079: PIPI的存錢罐 完全揹包

化身孤島的鯨o發表於2020-10-12

題目:

http://39.106.164.46/problem.php?id=1079

思路:

題目要求裝滿,然後又是完全揹包。注意初始化時將dp初始化為INF,dp[0]=0即可。

程式碼如下:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<cmath>
#include<queue>
#include<cstring>
#include<vector>
#include<stack>
#include<map>
#include<set>
#define MAX 505
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;

int n,m;
int w[MAX],v[MAX],dp[10005];

int main(){
    while(cin>>n>>m){
        memset(dp,INF,sizeof(dp));
        dp[0]=0;
        for(int i=0;i<n;i++){
            cin>>w[i]>>v[i];
        }
        for(int i=0;i<n;i++){
            for(int j=v[i];j<=m;j++){
                dp[j]=min(dp[j],dp[j-v[i]]+w[i]);
            }
        }
        cout<<dp[m]<<endl;
    }
    return 0;
}

相關文章