为啥CE
查看原帖
为啥CE
189752
danny0618楼主2020/9/30 22:55
#include<iostream>
#include<cstring>
#include<cstdio>
#define ll long long
using namespace std;
const ll N=60,MAX=2.1e9;
ll n,m,a[N];
long long s[N],ans1=MAX,ans2;
long long dp1[N][N],dp2[N][N];
int main(){
	cin>>n>>m;
	for(ll i=1;i<=n;i++){
		cin>>a[i];a[i]%=10;
		if(a[i]<0)a[i]+=10;
	}
	for(ll t=1;t<=n;t++){
		ans2=max(ans2,dp1[n][m]);
		for(ll i=0;i<=n;i++){
			for(ll j=0;j<=m;j++)
			dp1[i][j]=MAX;
		}
		memset(dp2,0,sizeof(dp2));
		dp1[0][0]=dp2[0][0]=1;a[n+1]=a[1];
		for(ll i=1;i<=n;i++)a[i]=a[i+1];
		for(ll i=1;i<=n;i++)
		s[i]=s[i-1]+a[i];
		for(ll i=1;i<=n;i++)
	  	  for(ll j=1;j<=m;j++)
			for(ll k=0;k<i;k++){
				ll x=dp1[k][j-1]*((s[i]-s[k])%10);
				ll y=dp2[k][j-1]*((s[i]-s[k])%10);
				dp1[i][j]=min(x,dp1[i][j]);
				dp2[i][j]=max(y,dp2[i][j]);
			}
		ans1=min(ans1,dp1[n][m]);
		ans2=max(ans2,dp2[n][m]);
	}
	cout<<ans1<<endl<<ans2<<endl;
	return 0;
}
2020/9/30 22:55
加载中...