P1005 TLE70% 求调 悬一关
  • 板块灌水区
  • 楼主hanyu0722
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/7/6 17:28
  • 上次更新2024/7/6 19:41:48
查看原帖
P1005 TLE70% 求调 悬一关
937522
hanyu0722楼主2024/7/6 17:28

代码如下

#include<bits/stdc++.h>
using namespace std;
string jia(string a,string b){
	if (a.size()<b.size()) swap(a,b);
	while (a.size()!=b.size()) b="0"+b;
	int a1=a.size();
	int ans[100005]={};
	for (int i=a1-1;i>=0;i--){
		int o=ans[i+1];
		ans[i+1]=(a[i]+b[i]-'0'-'0'+o)%10;
		ans[i]=(a[i]+b[i]-'0'-'0'+o)/10;
	}
	string ans1="";
	if (ans[0]==1) ans1="1";
	for (int i=1;i<=a1;i++){
		ans1+=char(ans[i]+'0');
	}
	return ans1;
} 
string cheng(string a,string b){
	int ans[200005]={},right=0;
	reverse(a.begin(),a.end());
	reverse(b.begin(),b.end());
	if (a.size()<b.size()) swap(a,b);
	for (int i=0;i<a.size();i++) for (int j=0;j<b.size();j++) ans[i+j]+=(a[i]-'0')*(b[j]-'0');
	for (int i=0;i<=a.size()+b.size();i++){
		int j=i,k=ans[i];
		ans[i]=0;
		while (k){
			if (j>right) right=j;
			ans[j]+=k%10;
			k/=10;
			j++;
		}
	}
	string ans1="";
	for (int i=right;i>=0;i--) ans1+=char(ans[i]+'0');
	return ans1;
}
string max(string a,string b){
	if (a.size()!=b.size()) return (a.size()>b.size()?a:b);
	return (a>b?a:b);
} 
int n,m;
string sum="0";
int main(){
    cin>>n>>m;
    for (int i=1;i<=n;i++){
        string dp[85][85];
        for (int j=1;j<=m;j++) cin>>dp[j][j];
        for (int j=2;j<=m;j++){
            for (int k=1;k<=m-j+1;k++){
                dp[k][k+j-1]=max(jia(dp[k][k],jia(dp[k+1][k+j-1],dp[k+1][k+j-1])),jia(dp[k+j-1][k+j-1],jia(dp[k][k+j-2],dp[k][k+j-2])));
            }
        }
        sum=jia(sum,dp[1][m]);
    }
    cout<<jia(sum,sum);
    return 0;
}
2024/7/6 17:28
加载中...