过不了样例0pts求调!!!!!!!
查看原帖
过不了样例0pts求调!!!!!!!
950927
_luo_gu楼主2024/8/21 16:56
#include <bits/stdc++.h>
using namespace std ; 
int n , a[302] ,dpma[202][202],dpmn[202][202] ,sum[302] ;
int main(){
	scanf("%d" , &n );
	memset(dpma,0,sizeof(dpma));
	memset(dpmn,0x7f,sizeof(dpmn));
	for( int i = 1 ; i <= n ; i ++ ){
		scanf("%d" , &a[i] );
		a[i+n] = a[i] ;
		dpma[i][i]= dpmn[i][i] = a[i] ;
		dpma[i+n][i+n]= dpmn[i+n][i+n] = a[i] ;
	}
	for( int i = 1 ; i<= 2*n ; i ++ ){
		sum[i] = a[i] ;
		sum[i] += sum[i-1] ;
	}
	for( int i = 2 ; i <= n ; i ++ ){
		for( int j = 1 ; j+i-1 <= 2*n ; j ++ ){
			for( int k = j ; k < i+j-1 ; k ++ ){
				dpma[j][i+j-1] = max( dpma[j][i+j-1] , dpma[j][k]+dpma[k+1][i+j-1] );
				dpmn[j][i+j-1] = min( dpmn[j][i+j-1] , dpmn[j][k]+dpmn[k+1][i+j-1] );
			}
			dpma[j][i+j-1] += ( sum[i+j-1] - sum[j-1] );
			dpmn[j][i+j-1] += ( sum[i+j-1] - sum[j-1] );
		}
	}
	int ansma = -1e9 ;
	int ansmn = 1e9 ;
	for( int i = 1 ; i <= n ; i ++ ){
		ansma = max( ansma , dpma[i][i+n-1]);
		ansmn = min( ansmn , dpmn[i][i+n-1]);
	}
	cout << ansmn << endl << ansma << endl;
	return 0 ;
}

感谢aker,好人一生平安

2024/8/21 16:56
加载中...