厌氧代码,怎么改啊
  • 板块灌水区
  • 楼主under_hole
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/7/12 17:10
  • 上次更新2024/7/12 19:05:53
查看原帖
厌氧代码,怎么改啊
1291460
under_hole楼主2024/7/12 17:10

题目在此:P1005 [NOIP2007 提高组] 矩阵取数游戏
捞上一个求助帖,为同一道题目:神奇错误,蒟蒻求调,玄关

#include<bits/stdc++.h>
using namespace std;
/*2024/7/12
*question id:1574+P1005
*answer:
*idea:
*else:
*/
const int maxn=105;
__int128 f[maxn][maxn],p[maxn],ans;
int n,m,a[maxn][maxn];
inline void print(__int128 n){
	if(n<0){
		putchar('-');
		n*=-1;
	}
	if(n>9)print(n/10);
	putchar(n%10+'0');
	return;
}
inline void work(long long tmp){
	memset(f,0,sizeof(f));
	for(int i=1;i<=m;i++)f[i][i]=p[m]*a[tmp][i];
	for(int l=2;l<=m;l++)for(int i=1;i+l-1<=m;i++){
		int j=i+l-1;
		f[i][j]=max(f[i+1][j]+(p[m-l+1]*a[tmp][i]),f[i][j-1]+(p[m-l+1]*a[tmp][j]));
	}
	ans=ans+f[1][m];
	return;
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%lld",&a[i][j]);
	p[1]=2;
	for(int i=2;i<=m;i++)p[i]=p[i-1]*2;
	for(int i=1;i<=n;i++)work(i);
	print(ans);
	printf("\n");
	return 0;
}
2024/7/12 17:10
加载中...