本地输出正确,你谷70分

P1005 [NOIP2007 提高组] 矩阵取数游戏

```cpp #include<bits/stdc++.h> using namespace std; const int N = 81; struct nu { int num[50]={0}; int len=0; }; nu tu[N][N]; nu add(nu a,nu b) { nu now; int len; if(a.len>b.len) len=a.len; else len=b.len; int tp=0; for(int i=1;i<=len;i++) { now.num[i]=(a.num[i]+b.num[i]+tp)%10; tp=(a.num[i]+b.num[i]+tp)/10; } if(tp!=0) { now.num[len+1]=tp; now.len=len+1; } else { now.len=len; } return now; } nu tonu(int a) { nu now; int cnt=0; while(a!=0) { cnt++; now.num[cnt]=a%10; a/=10; } now.len=cnt; return now; } nu dp[N][N][N]; nu mul(nu a,nu b) { int tp,cnt; tp=0; nu now; if(a.len<b.len) swap(a,b); for(int j=1;j<=b.len;++j) { cnt=0; for(int i=1;i<=a.len;++i) { int aaa=now.num[i+j-1]; now.num[i+j-1]=(aaa+b.num[j]*a.num[i]+tp)%10; tp=(aaa+b.num[j]*a.num[i]+tp)/10; } while(tp!=0) { now.num[a.len+j+cnt]+=tp%10; tp=tp/10; cnt++; } } cnt=a.len+b.len; while(now.num[cnt]==0) { cnt--; } now.len=cnt; return now; } nu qpow(int b) { nu a; nu now; a.num[1]=2; a.len=1; now.num[1]=1; now.len=1; while(b!=0) { if(b&1) { now=mul(a,now); } b>>=1; a=mul(a,a); } return now; } void print(nu a) { for(int i=a.len;i>=1;i--) { printf("%d",a.num[i]); } } nu max(nu a,nu b) { if(b.len>a.len) return b; if(a.len>b.len) return a; for(int i=a.len;i>=1;i--) { if(a.num[i]==b.num[i]) continue; else { if(a.num[i]>b.num[i]) return a; else return b; } } } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) { for(int j=1;j<=m;++j) { int x; scanf("%d",&x); tu[i][j]=tonu(x); } } for(int i=1;i<=m;++i) { nu cx=qpow(i); for(int j=1;j<=n;++j) { for(int k=0;k<=i;++k) { if(k==0) {dp[i][j][k]=add(dp[i-1][j][k],mul(cx,tu[j][m-(i-k)+1]));continue;} if(k==i) {dp[i][j][k]=add(dp[i-1][j][k-1],mul(cx,tu[j][k]));continue;} dp[i][j][k]=max(add(dp[i-1][j][k-1],mul(cx,tu[j][k])),add(dp[i-1][j][k],mul(cx,tu[j][m-(i-k)+1]))); } } } nu ans; for(int i=1;i<=n;++i) { nu maxx; maxx.len=1; maxx.num[1]=0; for(int k=0;k<=m;++k) { maxx=max(dp[m][i][k],maxx); } ans=add(ans,maxx); } print(ans); return 0; } ``` 这是代码
by Torry_Q @ 2020-10-28 17:02:29


有手就xing
by tuoyang @ 2020-11-21 21:15:47


|