蒟蒻求调
查看原帖
蒟蒻求调
1329529
hefu1234楼主2024/8/31 11:38

没有开两个数组,为什么这样写只有20分

//
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 110;
int n,m,r,rmb[N],rp[N],tt[N];
int f[N][N][2];
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    cin>>n;
    for(int i = 1; i <= n; i++) cin>>rmb[i]>>rp[i]>>tt[i];
    cin>>m>>r;
    memset(f,0x3f,sizeof f);
    f[0][0][0] = 0;
    for(int i = 1; i <= n; i++)
        for(int j = m; j >= rmb[i]; j--)
            for(int k = r; k >= rp[i]; k--)
                if(f[j][k][1] < f[j - rmb[i]][k - rp[i]][1] + 1)
                    f[j][k][0] = f[j - rmb[i]][k - rp[i]][0] + tt[i],
                    f[j][k][1] = f[j - rmb[i]][k - rp[i]][1] + 1;
                else if(f[j][k][1]  == f[j - rmb[i]][k - rp[i]][1] + 1  )
                    f[j][k][0] = min(f[j][k][0],f[j - rmb[i]][k - rp[i]][0] + tt[i]);
    cout<<f[m][r][0];
    return 0;
}





2024/8/31 11:38
加载中...