粉刷匠90pts求调
查看原帖
粉刷匠90pts求调
1257811
jszzx22ykzr楼主2024/9/7 13:56

90分,做了很多尝试(改输入,修改k的循环范围等),Hack过了,但一直WA on #7,不知道为什么,路过的大佬帮忙看看。

#include <bits/stdc++.h>
using namespace std;
string s[55];
int dp[55][55][2505][3];
int p,q,n,m,t;
int main()
{
	scanf("%d%d%d",&n,&m,&t);
	getchar();
	for(int i=1;i<=n;i++){
  getline(cin,s[i]);
		s[i]=" "+s[i];
	}
	for(int i=1;i<=n;i++)
	{
		q=max(1,t-((n-i+1)*m-1));
		p=min(t,(i-1)*m+1);
		for(int k=q;k<=p;k++)
		{
			dp[i][1][k][2]=max(dp[i-1][m][k][2],max(dp[i-1][m][k][1],dp[i-1][m][k][0]));
			dp[i][1][k][0]=max(dp[i-1][m][k-1][0],max(dp[i-1][m][k-1][1],dp[i-1][m][k-1][2]))+(s[i][1]=='0'?1:0);
			dp[i][1][k][1]=max(dp[i-1][m][k-1][1],max(dp[i-1][m][k-1][0],dp[i-1][m][k-1][2]))+(s[i][1]=='1'?1:0);
		}
		for(int j=2;j<=m;j++)
		{
			q=max(1,t-((n-i+1)*m-j));
			p=min(t,(i-1)*m+j);
			for(int k=q;k<=p;k++)
			{
				dp[i][j][k][2]=max(dp[i][j-1][k][2],max(dp[i][j-1][k][1],dp[i][j-1][k][0]));
				dp[i][j][k][0]=max(dp[i][j-1][k][0],max(dp[i][j-1][k-1][1],dp[i][j-1][k-1][2]))+(s[i][j]=='0'?1:0);
				dp[i][j][k][1]=max(dp[i][j-1][k][1],max(dp[i][j-1][k-1][0],dp[i][j-1][k-1][2]))+(s[i][j]=='1'?1:0);
			}
		}
	}
	printf("%d",max(dp[n][m][t][0],max(dp[n][m][t][1],dp[n][m][t][2])));
	return 0;
}

2024/9/7 13:56
加载中...