제출 #438606

#제출 시각아이디문제언어결과실행 시간메모리
438606HaidaraKnapsack (NOI18_knapsack)C++17
73 / 100
1079 ms35516 KiB
    #include<bits/stdc++.h>
    #define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    #define int long long
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define FOR(i,n) rep(i,0,n)
    using namespace std;
    int s,n,v[100001],w[100001],k[100001],dp[100001][2001];
inline int read() {
    int x = 0;
    char ch = getchar();
    while (ch < '0' || ch > '9') ch = getchar();
    while (ch >= '0' && ch <= '9'){
		x = (x << 3) + (x << 1) + ch - '0';
		ch = getchar();
	}
    return x;
}
    int solve(int inx=0,int curr=0)
    {
        if(dp[inx][curr])
            return dp[inx][curr];
        if(inx==n)
            return 0;
        FOR(i,k[inx]+1)
        {
            if(curr+i*w[inx]<=s)
                dp[inx][curr]=max(dp[inx][curr],solve(inx+1,curr+i*w[inx])+i*v[inx]);
            else
                break;
        }
        return dp[inx][curr];
    }
    signed main()
    {
      s=read();
      n=read();
        FOR(i,n)
        {
            v[i]=read();
          w[i]=read();k[i]=read();
            k[i]=min(k[i],s/w[i]);
        }
        cout<<solve();
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...