求助
查看原帖
求助
563069
UQAQU楼主2024/8/31 17:02
#include<bits/stdc++.h>
#define ll long long int
using namespace std;
const int N=1e6+7;
ll dpn[200][200][15],dpx[200][200][15];
ll a[N],qz[N];
int main()
{
	ll n,m;
	cin>>n>>m;
	memset(dpn,1000000,sizeof(dpn));
	for (int i=1;i<=n;i++){
		cin>>a[i];
		a[i+n]=a[i];
	}
	for (int i=1;i<=2*n;i++){
		qz[i]=qz[i-1]+a[i];
	}
	for (int i=1;i<=2*n;i++){
		for (int j=i;j<=2*n;j++){
			dpn[i][j][1]=((qz[j]-qz[i-1])%10+10000)%10;
			dpx[i][j][1]=((qz[j]-qz[i-1])%10+10000)%10;
		}
	}
	for (int i=1;i<=n;i++){
		for (int j=i+1;j<=n+i-1;j++){
			for (int len=2;len<=m;len++){
				for (int k=i;k<j;k++){
					dpn[i][j][len]=min(dpn[i][k][len-1]*dpn[k+1][j][1],dpn[i][j][len]);
					dpx[i][j][len]=max(dpx[i][k][len-1]*dpx[k+1][j][1],dpx[i][j][len]);
				}
			}
		}
	}
	ll ans1=100000000,ans2=-100000;
	for (int i=1;i<=n;i++){
		ans1=min(ans1,dpn[i][i+n-1][m]);
		ans2=max(ans2,dpx[i][i+n-1][m]);
	}
	cout<<ans1<<endl;
	cout<<ans2<<endl;
	return 0;
}
2024/8/31 17:02
加载中...