社区讨论
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 条回复,欢迎继续交流。
正在加载回复...