2 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef __int128 ll; const int N=110; ll a[N],f[N][N],d[N]; template<typename T>void qr(T& x) { x=0;int f=1;char c=getchar(); for( ;!isdigit(c);c=getchar())if(c=='-')f=-1; for( ; isdigit(c);c=getchar())x=x*10+c-48; x=x*f; } template<typename T>void qw(T x) { if(x<0)x=-x,putchar('-'); if(x/10)qw(x/10); putchar(x%10+48); } int main() { d[0]=1;for(int i=1;i<=100;i++)d[i]=d[i-1]*2; int n,m;qr(n),qr(m); ll ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++)qr(a[j]); for(int j=1;j<=m;j++)f[j][j]=a[j]*d[m]; for(int k=2;k<=m;k++) { for(int l=1;l<=m-k+1;l++) { int r=l+k-1; f[l][r]=max(f[l+1][r]+a[l]*d[m-(r-l)],f[l][r-1]+a[r]*d[m-(r-l)]); } } ans+=f[1][m]; } qw(ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; typedef __int128 ll; const int N=110; ll a[N],f[N][N],d[N]; template<typename T>void qr(T& x) { x=0;int f=1;char c=getchar(); for( ;!isdigit(c);c=getchar())if(c=='-')f=-1; for( ; isdigit(c);c=getchar())x=x*10+c-48; x=x*f; } template<typename T>void qw(T x) { if(x<0)x=-x,putchar('-'); if(x/10)qw(x/10); putchar(x%10+48); } int main() { d[0]=1;for(int i=1;i<=100;i++)d[i]=d[i-1]*2; int n,m;qr(n),qr(m); ll ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++)qr(a[j]); for(int j=1;j<=m;j++)f[j][j]=a[j]*d[m]; for(int k=2;k<=m;k++) { for(int l=1;l<=m-k+1;l++) { int r=l+k-1; f[l][r]=max(f[l+1][r]+a[l]*d[m-(r-l)],f[l][r-1]+a[r]*d[m-(r-l)]); } } ans+=f[1][m]; } qw(ans); return 0; }
- 1
信息
- ID
- 728
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 5
- 标签
- 递交数
- 32
- 已通过
- 16
- 上传者