萌新求助qwq为什么这份代码必须在最后一行对零取max才行
查看原帖
萌新求助qwq为什么这份代码必须在最后一行对零取max才行
578932
AlphaGuo楼主2022/11/15 16:43
#include<bits/stdc++.h>

using namespace std;

const int N=105;

int n,m,val[2*N],sum[2*N],f1[N][N][N],f2[N][N][N];

inline int max(int a,int b){return a>b?a:b;}
inline int min(int a,int b){return a<b?a:b;}

#define fin cin

int main(){
	cin>>n>>m;int len=2*n;
	memset(f2,0x3f,sizeof(f2));
	for(int i=1;i<=n;i++)cin>>val[i],val[n+i]=val[i]=(val[i]%10+10)%10;
	for(int i=1;i<=len;i++)sum[i]=sum[i-1]+val[i];
	for(int i=1;i<=len;i++)
		for(int j=i;j<=len;j++)
			f1[i][j][1]=f2[i][j][1]=((sum[j]-sum[i-1])%10+10)%10;
	for(int l=2;l<=m;l++)
		for(int i=l;i<=n;i++)
			for(int j=1;j<=len-i+1;j++)
				for(int k=j;k<j+i-1;k++){
					f1[j][j+i-1][l]=max(f1[j][j+i-1][l],f1[j][k][l-1]*(((sum[j+i-1]-sum[k])%10+10)%10));
					f2[j][j+i-1][l]=min(f2[j][j+i-1][l],f2[j][k][l-1]*(((sum[j+i-1]-sum[k])%10+10)%10));
				}
	int ans1{},ans2=INT_MAX;
	for(int i=1;i<=len-n+1;i++)ans1=max(ans1,f1[i][i+n-1][m]),ans2=min(ans2,max(0,f2[i][i+n-1][m]));//就这里刷新ans2的时候
	return cout<<ans2<<endl<<ans1<<endl,0;
}
``
2022/11/15 16:43
加载中...