我这个int128怎么不对?
查看原帖
我这个int128怎么不对?
998474
ShaunJulian楼主2023/10/21 10:11
#include<bits/stdc++.h>
using namespace std;
typedef __int128_t int128;
int N,M;
int128 ans;
int128 b[9999999];
int128 dp[1001][1001];
int128 read()
{
	int128 x=0;bool f=0;char c=getchar();
	while(c<'0'||c>'9')
	{
	    if(c=='-')
		f=1;
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		x=(x<<1)+(x<<3)+(c^48);
		c=getchar();
	}
	return f?-x:x;
}
inline void write(int128 x)
{
	if(x<0)
	putchar('-');
	if(x>9)
	write(x/10);
	putchar(x%10+'0');
}
int main()
{
	cin>>N>>M;
	while(N--)
	{
		for(int i=1;i<=M;i++)
		b[i]=read();
		int128 pre=0;
		for(int i=1;i<=M;i++)
		for(int j=M;j>=i;j--)
		{
			dp[i][j]=max(dp[i-1][j]+b[i-1]*pow(2,M-j+i-1),dp[i][j+1]+b[j+1]*pow(2,M-j+i-1));
			if(i==j)
			{
				dp[i][j]+=b[i]*pow(2,M);
				pre=max(pre,dp[i][j]);
			}
		}
		ans+=pre;
		memset(dp,0,sizeof(dp));
	}
	write(ans);
	return 0;
}
2023/10/21 10:11
加载中...