题解
2024-08-05 09:09:12
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[205],s[205];
int f[105][105][15],g[105][105][15];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i]=(a[i]%10+10)%10;
a[n+i]=a[i];
}
int N=2n;
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
for(int k=0;k<=m;k++)
{
f[i][j][k]=100000000;
}
}
}
for(int i=1;i<=N;i++)
{
s[i]=s[i-1]+a[i];
}
for(int i=1;i<=N;i++)
{
for(int j=i;j<=N;j++)
{
f[i][j][1]=(s[j]-s[i-1])%10;
g[i][j][1]=(s[j]-s[i-1])%10;
}
}
for(int l=2;l<=m;l++)
{
for(int len=2;len<=n;len++)
{
for(int i=1;i+len-1<=N;i++)
{
int j=i+len-1;
for(int k=i;k<j;k++)
{
f[i][j][l]=min(f[i][j][l],f[i][k][l-1]((s[j]-s[k])%10));
g[i][j][l]=max(g[i][j][l],g[i][k][l-1]*((s[j]-s[k])%10));
}
}
}
}
int minans=0x3f3f3f3f;
int maxans=0;
for(int i=1;i<=n;i++)
{
minans=min(minans,f[i][i+n-1][m]);
maxans=max(maxans,g[i][i+n-1][m]);
}
cout<<minans<<endl<<maxans;
return 0;
}
这里空空如也
有帮助,赞一个