90分求调 WA on #1.
查看原帖
90分求调 WA on #1.
726902
bcbgszyzh楼主2024/10/1 17:16
#include<bits/stdc++.h>
using namespace std;
const int MAXN=85;
int in_2[MAXN],m,n;
__int128 pw[MAXN],ans,f[MAXN][MAXN];
void pre(){
	pw[0]=1;
	for(int i=1;i<MAXN;++i)pw[i]=pw[i-1]*2;
} 
void dp(){
	for(int i=1;i<=n;++i)scanf("%d",&in_2[i]);
	memset(f,0,sizeof f);
	for(int i=1;i<=n;++i)f[i][i]=in_2[i]*pw[n];
	for(int len=2;len<=n;++len){
		for(int i=1;i+len-1<=n;++i){
			int ed=i+len-1;
			f[i][ed]=max(f[i][ed-1]+in_2[ed]*pw[n-len+1],f[i+1][ed]+in_2[i]*pw[n-len+1]);
		}
	}
}
void write(__int128 a){
    string s;
    while(a){
        s+=a%10+'0';
        a/=10;
    }
    reverse(s.begin(),s.end());
    cout<<s;
}
int main(){
	scanf("%d%d",&m,&n);
	pre();
	for(int i=1;i<=m;++i){
		dp();
		ans+=f[1][n];
	}
	write(ans);
	return 0;
}
2024/10/1 17:16
加载中...