如果把这题 DP 解法的两个循环换一下怎么写?
查看原帖
如果把这题 DP 解法的两个循环换一下怎么写?
574944
Micnation_AFO楼主2022/6/13 11:04

如题,蒟蒻写完之后发现是有明显的错误性的:

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define maxn 300005
int m, s, t;
int f[maxn];

signed main() {
    cin >> m >> s >> t;
    for (int i = 1; i <= t; i++) f[i] = f[i - 1] + 17;
    for (int i = 1; i <= t; i++) {
        if (m >= 10) f[i] = f[i - 1] + 60, m -= 10;
        else if (f[i - 1] > f[i]) m += 4, f[i] = f[i - 1];
        if (f[i] > s) {
            cout << "YES" << endl << i << endl;
            return 0;
        }
    }
    cout << "NO" << endl << f[t] << endl;
    return 0;
}

应该怎么改呢?

2022/6/13 11:04
加载中...