RE 悬1关
查看原帖
RE 悬1关
1023961
Ryzen_9_9950X3D楼主2024/5/25 08:58
#include <bits/stdc++.h>
using namespace std;
#define int long long
int dp[1005][3][1005];
int hpcost[1005],extra[1005];
int sx[1005];
int by(int x,int y)
{
    if((x == 1 && y == 0) || (x == 2 && y == 1) || (x == 0 && y == 2)) return 2;
    if(x == y) return 1;
    return 0;
}
int nxt(int x)
{
    if(x == 1) return 2;
    if(x == 2) return 0;
    return 1;
}
signed main()
{
    int a;
    cin >> a;
    int b = a - 1;
    for(int i = 1;i <= a;i++) cin >> extra[i];
    for(int i = 1;i <= b;i++) cin >> hpcost[i];
    for(int i = 1;i <= a;i++)
    {
        cin >> sx[i];
        cout << "he ";
    }
    memset(dp,128,sizeof(dp));
    for(int i = 0;i <= 2;i++)
    {
        dp[1][i][0] = by(i,sx[1]);
    }
    for(int i = 1;i <= a;i++)
    {
        for(int j = 0;i <= 2;j++)
        {
            for(int k = 0;k < i;k++)
            {
                dp[i][j][k] = dp[i - 1][j][k] + by(j,sx[i]) * extra[i];
                if(k > 0)
                {
                    for(int l = 0;l <= 2;l++)
                    {
                        if(l != j) dp[i][j][k] = max(dp[i][j][k],dp[i - 1][l][k - 1] + by(l,sx[i]) * extra[i] - hpcost[k]);
                    }
                }
            }
        }
    }
    int ans = -2147483648;
    for(int i = 0;i <= 2;i++)
    {
        for(int j = 0;j < a;j++) ans = max(ans,dp[a][i][j]);
    }
    cout << ans;
    return 0;
}

程序总是在读入最后一个数的时候运行错误,求指点!

2024/5/25 08:58
加载中...