HELP!!!
  • 板块灌水区
  • 楼主elinatotoro
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/9/29 22:31
  • 上次更新2023/10/27 09:30:10
查看原帖
HELP!!!
222220
elinatotoro楼主2022/9/29 22:31

CF41D 第51组数据过不去

#include<bits/stdc++.h>
using namespace std;
int a[101][101],dp[101][101][12],fr[101][101][12],walk[101][101][12];
int main()
{
	int i,j,n,m,k,l,ans=-1,xx,num=0,yy;
	string s="";
	char c;
	cin>>n>>m>>k;
	k++;
	memset(dp,-1,sizeof(dp));
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			cin>>c;
			a[i][j]=(int)(c)-48;
		}
	}
	for(i=1;i<=m;i++)
	{
		dp[n][i][a[n][i]%k]=a[n][i];
		fr[n][i][a[n][i]%k]=i;
	}
	for(i=n-1;i>=1;i--)
	{
		for(j=1;j<=m;j++)
		{
			for(l=0;l<k;l++)
			{
				if(j!=1&&dp[i+1][j-1][l]!=-1)
				{
					if(dp[i][j][(dp[i+1][j-1][l]+a[i][j])%k]<dp[i+1][j-1][l]+a[i][j])
					{
						dp[i][j][(dp[i+1][j-1][l]+a[i][j])%k]=dp[i+1][j-1][l]+a[i][j];
						walk[i][j][(dp[i+1][j-1][l]+a[i][j])%k]=j-1;
						fr[i][j][(dp[i+1][j-1][l]+a[i][j])%k]=fr[i+1][j-1][l];
					}
				}
				if(j!=m&&dp[i+1][j+1][l]!=-1)
				{
					if(dp[i][j][(dp[i+1][j+1][l]+a[i][j])%k]<dp[i+1][j+1][l]+a[i][j])
					{
						dp[i][j][(dp[i+1][j+1][l]+a[i][j])%k]=dp[i+1][j+1][l]+a[i][j];
						walk[i][j][(dp[i+1][j+1][l]+a[i][j])%k]=j+1;
						fr[i][j][(dp[i+1][j+1][l]+a[i][j])%k]=fr[i+1][j+1][l];
					}
				}
			}
		}
	}
	for(i=1;i<=m;i++)
	{
		if(dp[1][i][0]>ans)
		{
			ans=dp[1][i][0];
			xx=i;
		}
	}
	if(ans==-1)
	{
		cout<<-1<<endl;
	}
	else
	{
		cout<<ans<<endl;
		cout<<fr[1][xx][0]<<endl;
		for(i=1;i<n;i++)
		{
			if(walk[i][xx][num]==xx+1)
			{
				s='L'+s;
			}
			else
			{
				s='R'+s;
			}
			yy=walk[i][xx][num];
			num=(k+num-(a[i][xx]%k))%k;
			xx=yy;
		}
		cout<<s<<endl;
	}
} 
2022/9/29 22:31
加载中...