求助我这个高精度有什么问题?
查看原帖
求助我这个高精度有什么问题?
1122530
elpsconr楼主2024/12/3 18:42

我这个高精度有什么问题?为啥输出是10?感觉巨对啊

/*
  卫风·芄兰
芄兰之支,童子佩觿.
虽则佩觿,能不我知?
容兮遂兮,垂带悸兮.
芄兰之叶,童子佩韘.
虽则佩韘,能不我甲?
容兮遂兮,垂带悸兮.
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define PII pair<int,int>
#define tul tuple<int,int,int>
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define rep_(i,a,b) for(int i=a;i>=b;--i)
#define all(x) x.begin(),x.end()
#define bp(x) __builtin_popcountll(x)
#define ctz(x) __builtin_ctzll(x)
#define cy cout<<"YES"<<endl
#define cn cout<<"NO"<<endl
#define lc (rt<<1)
#define rc (rt<<1|1)
mt19937_64 rnd(time(0));
const int N=5e2+5,yyx=998244353;
vector<int> to[N];
int n,m,k,a[N][N];
inline int mod(int x){
  return (x%yyx+yyx)%yyx;
}
inline int cmin(int &x,int y){
  return x>y?x=y,1:0;
}
inline int cmax(int &x,int y){
  return x<y?x=y,1:0;
}
struct Bint{
    int a[N],n;
    Bint(){
        rep(i,0,N-1) a[i]=0;
        n=N-1;
    }
    Bint(string x){
        rep(i,0,N-1) a[i]=0;
        n=N-1;
        for(int i=0;i<x.size();++i){
            a[i]=x[i]-'0';
        }
    }
    Bint &operator* (int x){
        rep(i,0,n) a[i]*=x;
        rep(i,0,n-1) a[i+1]+=a[i]/10,a[i]%=10;
        return *this;
    }
    Bint &operator/ (int x){
        rep_(i,n,0){
            if(i) a[i-1]+=a[i]%x*10;
            a[i]/=x;
        }
        return *this;
    }
    Bint &operator+ (const Bint &x){
        rep(i,0,n){
            a[i]+=x.a[i];
            if(a[i]>9){
                a[i+1]++;
                a[i]-=10;
            }
        }
        return *this;
    } 
};
int dp[N][N];
ostream &operator<<(ostream &o,const Bint &x){
    int t=N-1;
    while(!x.a[t]&&t) --t;
    rep_(i,t,0) o<<x.a[i];
    return o;
}
Bint max(const Bint &x,const Bint &y){
    int t1=N-1,t2=N-1;
    while(!x.a[t1]&&t1) --t1;
    while(!x.a[t2]&&t2) --t2;
    if(t1>t2) return x;
    if(t1<t2) return y;
    rep_(i,t1,0){
        if(x.a[i]>y.a[i]) return x;
        if(x.a[i]<y.a[i]) return y;
    }
    return x;
}
inline void solve(){
   cin>>n>>m;
   //Bint an("1");
   //pw[0]=an;
   int pw[500];
   pw[0]=1;
   rep(i,1,50) pw[i]=(pw[i-1]*2); 
   rep(i,1,n) rep(j,1,m) cin>>a[i][j];
   //Bint ans("0");
   int ans=0;
   rep(k,1,n){
    memset(dp,0,sizeof dp);
    rep(i,1,m){
        rep_(j,m,i){
            dp[i][j]=max(dp[i][j],dp[i-1][j]+pw[m-j+i-1]*a[k][i-1]);
            dp[i][j]=max(dp[i][j],dp[i][j+1]+pw[m-j+i-1]*a[k][j+1]);
       }
    }
    //Bint ma("0");
    int ma=0;
    rep(i,1,m){
        ma=max(ma,dp[i][i]+pw[m]*a[k][i]);
    }
    ans=ans+ma;
   }
   cout<<ans;
}
signed main(){
  cin.tie(0)->sync_with_stdio(0);
  //freopen("D://321//in.txt","r",stdin);
  //freopen("D://321//out.txt","w",stdout);
  int _=1;
  //cin>>_;
  while(_--)
  solve();
  return 0;
}
2024/12/3 18:42
加载中...