#1 #5AC,其他全WA,求调
查看原帖
#1 #5AC,其他全WA,求调
1041227
yzysdTNT楼主2024/1/25 10:01
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
#define int long long
int a[N],f1[N][N][15],f2[N][N][15],n,m;//f1存最小,f2存最大 
long long b[N];

int mod(int x){
	return (x % 10 + 10) % 10;
}


signed main(){
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		cin >> a[i];
		a[i + n] = a[i]; 
	}
	for(int i = 1;i <= 2 * n;i++){
		b[i] = a[i] + b[i - 1];
	}
	memset(f1,0x3f,sizeof f1);
	                                                  
	for(int i = 1;i <= 2 * n;i++){
		for(int j = 1;j <= 2 * n;j++){
			f1[i][j][1] = f2[i][j][1] = mod(b[j] - b[i - 1]);
		}
	}
	
	
	for(int l = 2;l <= m;l++){
		for(int i = 1;i <= n;i++){
			for(int j = i + 1;j < 2 * n;j++){
				for(int k = i + 1;k < j;k++){
					f1[i][j][l] = min(f1[i][j][l],f1[i][k][l - 1] * mod(b[j] - b[k]));
					f2[i][j][l] = max(f2[i][j][l],f2[i][k][l - 1] * mod(b[j] - b[k]));
				}
			}
		}
	}
	int minn = 0x3f,maxn = -0x3f;
	for(int i = 1;i <= n;i++){
		minn = min(minn,f1[i][i + n - 1][m]);
		maxn = max(maxn,f2[i][i + n - 1][m]);
	}
	cout << minn << '\n' << maxn;
	return 0;
}  

样例过了,下了第二个数据点,最小值输出成了-0x3f

2024/1/25 10:01
加载中...