求助,DP样例不过
查看原帖
求助,DP样例不过
818236
54188_you_Dad楼主2024/7/14 20:10
#include <bits/stdc++.h>
using namespace std;
//#define int long long
int a[105];
int s[105];
int ma[105][105][11];
int mi[105][105][11];
int MOD(int x)
{
	return (((x%10)+10)%10);
}
signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i+n] = a[i]; 
	} 
	for(int i=1;i<=2*n;i++) s[i] = s[i-1]+a[i];
	for(int l=1;l<=2*n;l++)
	{
		for(int r=l;r<=2*n;r++) mi[l][r][1] = ma[l][r][1] = MOD(s[r]-s[l-1]);
	}
	memset(mi,0x3f,sizeof mi);
	for(int len=1;len<=m;len++)
	{
		for(int l=1;l<=2*n;l++)
		{
			for(int r=l+len-1;r<=2*n;r++)
			{
				for(int k=l+len-2;k<r;k++)
				{
					mi[l][r][len] = min(mi[l][r][len],mi[l][k][len-1]*MOD(s[r]-s[l-1]));
					ma[l][r][len] = max(ma[l][r][len],ma[l][k][len-1]*MOD(s[r]-s[l-1]));
				}
			}
		}
	}
	int mam = -1;
	int mim = 0x3f3f3f3f;
	for(int i=1;i<=n;i++)
	{
		mam =max(mam,ma[i][i+n-1][m]);
		mim = min(mim,mi[i][i+n-1][m]);
	}
	cout<<mim<<"\n"<<mam;
	return 0;
}

2024/7/14 20:10
加载中...