社区讨论

0分求条

P1541[NOIP 2010 提高组] 乌龟棋参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mlhe50fk
此快照首次捕获于
2026/02/11 10:08
上周
此快照最后确认于
2026/02/12 20:30
7 天前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
const int D = 45;
int dp[D][D][D][D];
int n, m;
int a, b, c, d;
int s[500];
int x;
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> s[i];
    }
    for (int i = 1; i <= m; i++)
    {
        cin >> x;
        switch (x)
        {
        case 1:
            a++;
        case 2:
            b++;
        case 3:
            c++;
        case 4:
            d++;
        }
    }
    for (int i=1;i<=40;i++)
    {
        for (int j=1;j<=40;j++)
        {
            for (int k=1;k<=40;k++)
            {
                for(int l=1;l<=40;l++)
                {
                    dp[i][j][k][l]=-114514114514;
                }
            }
        }
    }
    dp[0][1][1][1]=dp[1][0][1][1]=dp[1][1][0][1]=dp[1][1][1][0]=0;
    for (int i=1;i<=a;i++)
    {
        for (int j=1;j<=b;j++)
        {
            for (int k=1;k<=c;k++)
            {
                for(int l=1;l<=d;l++)
                {
                    dp[i][j][k][l]=max(dp[i-1][j][k][l]+s[(i-1)+2*(j-1)+3*(k-1)+4*(l-1)+1],max(dp[i][j-1][k][l]+s[(i-1)+2*(j-1)+3*(k-1)+4*(l-1)+1],max(dp[i][j][k-1][l]+s[(i-1)+2*(j-1)+3*(k-1)+4*(l-1)+1],dp[i][j][k][l-1]+s[(i-1)+2*(j-1)+3*(k-1)+4*(l-1)+1])));
                }
            }
        }
    }
    cout<<dp[a][b][c][d]<<endl;
    return 0;
}
忽略我丑陋的代码

回复

0 条回复,欢迎继续交流。

正在加载回复...