40分求助,玄关
查看原帖
40分求助,玄关
1020566
prg_equal_depressed楼主2024/7/14 20:46
#include <iostream>
using namespace std;
int n,m,a[105],q[105][105],dp_1[105][105],dp_2[105][105],minn=0x3f3f3f3f,maxn; 
int main(){
	cin>>n>>m;
	for (int i=1;i<=n;i++){
		cin>>a[i];
		a[i+n]=a[i];
	}
	for (int x=0;x<n;x++){
		for (int i=1+x;i<=n+x;i++){
			for (int j=i;j<=n+x;j++){
				q[i][j]=q[i][j-1]+a[j];
			}
		}		
		for (int i=1+x;i<=n+x;i++)
			for (int j=i;j<=n+x;j++){
				q[i][j]=(q[i][j]%10+10)%10;
			}
		for (int i=1+x;i<=n+x;i++){
			for (int j=1;j<=m;j++){
				dp_1[i][j]=0x3f3f3f3f;
			}
			dp_1[i][0]=q[1+x][i];
			dp_2[i][0]=q[1+x][i];
		}
		for (int j=1;j<=m;j++){
			for (int i=j+1+x;i<=n+x;i++){
				for (int k=1+x;k<i;k++){
					dp_1[i][j]=std::min(dp_1[i][j],dp_1[k][j-1]*q[k+1][i]);
					dp_2[i][j]=std::max(dp_2[i][j],dp_2[k][j-1]*q[k+1][i]);
				}
			}
		}		
		maxn=max(maxn,dp_2[n+x][m-1]);
		minn=min(minn,dp_1[n+x][m-1]);
	}
	cout<<minn<<endl<<maxn;
	return 0;
}
2024/7/14 20:46
加载中...