社区讨论

为啥样例输出78啊,哪位大佬能帮我找出错误啊

P1005[NOIP 2007 提高组] 矩阵取数游戏参与者 5已保存回复 17

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
17 条
当前快照
1 份
快照标识符
@mhizl0yg
此快照首次捕获于
2025/11/03 18:17
4 个月前
此快照最后确认于
2025/11/03 19:33
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[100][100];
string xx;
__int128 dp[100][100][100];
__int128 num;
__int128 power(__int128 a,__int128 b){
	__int128 ans=1;
	while(b){
		if(b%2) ans*=a;
		b/=2;
		a=a*a;
	}
	return ans;
}
void out(__int128 x){
	if(x<0) cout<<'-',x=-x;
	if(x>9) out(x/10);
	char s=x%10+48;
	cout<<s;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			dp[i][j][j]=a[i][j]*2;
		}
	}
	for(int d=1;d<=n;d++){
		for(int l=2;l<=m;l++){
			for(int i=1;i<=m-l+1;i++){
				int j=i+l-1;
				dp[d][i][j]=max(dp[d][i][j-1]+a[d][j]*power(2,l),dp[d][i+1][j]+a[d][i]*power(2,l));
			}
		}
	}
	for(int i=1;i<=n;i++){
		num+=dp[i][1][m];
	}
	out(num);
	return 0;
}

回复

17 条回复,欢迎继续交流。

正在加载回复...