求助 #2#3#6WA,有无大佬帮忙
查看原帖
求助 #2#3#6WA,有无大佬帮忙
1319442
Allen_Cheng楼主2024/7/17 21:21

帮忙看一下错

#include <iostream>
#include <cstring>
using namespace std;

const long long N = 1e10;
long long a[1020],x[1020]; //a前缀和,x读入
long long n, m, maxn = -N, minn = N;
long long f1[120][120][120],f2[120][120][120]; //f1最小,f2最大

int main()
{
    cin >> n >> m;
    memset(f1, N, sizeof(f1));
    memset(f2, -N, sizeof(f2));
    for (int i = 1; i <= n; i++)
        cin >> x[i], a[i] = a[i - 1] + x[i];
    for (int i = n + 1; i <= 2 * n ; i++)
        a[i] = a[i - 1] + x[i - n];
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            f1[i][j][1] = f2[i][j][1] = ((a[j] - a[i - 1]) % 10 + N) % 10;
    for (int i = 1; i <= 2 * n; i++)
        for (int j = i + 1; j <= 2 * n; j++)
            for (int l = 2; l <= m; l++)
                for (int k = i; k < j; k++)
                    f1[i][j][l] = min(f1[i][j][l], f1[i][k][l - 1] * f1[k + 1][j][1]), f2[i][j][l] = max(f2[i][j][l], f2[i][k][l - 1] * f2[k + 1][j][1]);
    for (int i = 1; i <= n; i++)
        maxn = max(maxn, f2[i][i + n - 1][m]), minn = min(minn, f1[i][i + n - 1][m]);
    printf("%d\n%d", minn, maxn);
    return 0;
}
2024/7/17 21:21
加载中...