大佬救我~
查看原帖
大佬救我~
1305692
xiangixuan楼主2025/1/6 18:06

调一天了qwq

只对了#1

大佬救我!!

#include <bits/stdc++.h>
#define int long long
#define N 201
using namespace std;
int n, m, Maxf[N][N][10], Minf[N][N][10], Max = -INT_MAX, Min = INT_MAX;
int mod(int n)
{
    return ((n % 10) + 10) % 10;
}
signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    memset(Maxf, 0xcf, sizeof Maxf);
    memset(Minf, 0x3f, sizeof Minf);
    cin >> n >> m;
    for (int i = 1; i <= n; ++i)
        cin >> Maxf[i][i][1], Maxf[i + n][i + n][1] = Maxf[i][i][1],
               Minf[i][i][1] = Maxf[i][i][1], Minf[i + n][i + n][1] = Minf[i][i][1];
    for (int len = 2; len <= n; ++len)
        for (int l = 1; l + len - 1 <= 2 * n; ++l)
        {
            int r = l + len - 1;
            Maxf[l][r][1] = Maxf[l][r - 1][1] + Maxf[r][r][1];
            Minf[l][r][1] = Minf[l][r - 1][1] + Minf[r][r][1];
            for (int k = 2; k <= m; ++k)
                for (int u = l; u < r; ++u)
                    Maxf[l][r][k] = max(Maxf[l][r][k], mod(Maxf[l][u][1]) * mod(Maxf[u + 1][r][k - 1])),
                    Minf[l][r][k] = min(Minf[l][r][k], mod(Minf[l][u][1]) * mod(Minf[u + 1][r][k - 1]));
        }
    for (int i = 1; i <= n; ++i)
        Max = max(Max, Maxf[i][i + n - 1][m]),
        Min = min(Min, Minf[i][i + n - 1][m]);
    cout << Min << '\n'
         << Max << '\n';
    return 0;
}
2025/1/6 18:06
加载中...