多加一句话就wa啦就奇怪呀
查看原帖
多加一句话就wa啦就奇怪呀
105820
阿尔托莉雅丶楼主2021/6/2 18:16
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
typedef long long ll;

int n, m, r;
int rmb[N], rp[N], ti[N];
int dp[N][N]; // 泡i miemie时 花了j rmb,k rp 的最多miemie数;
int f[N][N]; // 泡i miemie时 花了j rmb,k rp 的最短时间;

int main(void)
{
    cin >> n;

    for(int i = 1; i <= n; i++)
        cin >> rmb[i] >> rp[i] >> ti[i];
    // memset(f, 0x3f, sizeof(f)); 加上就错
    f[m][r] = 0;
    cin >> m >> r;
    for(int i = 1; i <= n; i++)
        for(int j = m; j >= rmb[i]; j--)
            for(int k = r; k >= rp[i]; k--)
            {
                if(dp[j][k] < dp[j - rmb[i]][k - rp[i]] + 1)
                {
                    dp[j][k] = dp[j - rmb[i]][k - rp[i]] + 1;
                    f[j][k] = f[j - rmb[i]][k - rp[i]] + ti[i];
                }
                else if(dp[j][k] == dp[j - rmb[i]][k - rp[i]] + 1)
                    f[j][k] = min(f[j][k], f[j - rmb[i]][k - rp[i]] + ti[i]);
                else
                {
                    dp[j][k] = dp[j][k];
                    f[j][k] = f[j][k];
                }
            }

    cout << f[m][r] ;

    return 0;
}

因为f有取min,赋个无穷大让它不能从奇怪的地方转移过来

But it wronged.

2021/6/2 18:16
加载中...