#1 5AC 其他全部WA 求助
查看原帖
#1 5AC 其他全部WA 求助
926886
kind_Ygg楼主2024/5/18 09:37
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=9e7;
int n,m;
int a[155];
int he[155];
int maxn,minn=N;
int dp[105][105][15][3];//minn maxn
int mod(int a)
{
	return (a+N)%10;
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i],he[i]=he[i-1]+a[i];
	for(int i=n+1;i<=2*n;i++) a[i]=a[i-n],he[i]=he[i-1]+a[i];
	for(int i=1;i<=n;i++){
		for(int j=i;j<=i+n-1;j++)
		{
			dp[i][j][1][1]=mod(he[j]-he[i-1]);
			dp[i][j][1][2]=mod(he[j]-he[i-1]);
		//	cout<<mod(he[j]-he[i-1])<<" ";
		}
	//	cout<<'\n';
	}
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=i+n-1;j++)
			for(int k=2;k<=m;k++)
			{
				dp[i][j][k][1]=N;
			}
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=i+n-1;j++)
			for(int k=2;k<=m&&j-i+1>=k;k++)
				for(int mid=i;mid<j;mid++)
				{
					dp[i][j][k][1]=min(dp[i][j][k][1],mod(dp[i][mid][k-1][1])*mod(dp[mid+1][j][1][1]));
					dp[i][j][k][2]=max(dp[i][j][k][2],mod(dp[i][mid][k-1][2])*mod(dp[mid+1][j][1][2]));
					//printf("i:%lld\nj:%lld\nk:%lld\n%lld %lld\n\n",i,j,k,dp[i][j][k][1],dp[i][j][k][2]);
				}
	for(int i=1;i<=n;i++){
	//	cout<<dp[i][i+n-1][m][2]<<" "<<dp[i][i+n-1][m][1]<<'\n';
		maxn=max(maxn,dp[i][i+n-1][m][2]);
		minn=min(minn,dp[i][i+n-1][m][1]);
	}
	cout<<minn<<'\n'<<maxn;
	return 0;
} 
2024/5/18 09:37
加载中...