求调P1018
  • 板块灌水区
  • 楼主Pow_Meter_Hour
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/6 20:18
  • 上次更新2023/11/2 15:09:44
查看原帖
求调P1018
1051463
Pow_Meter_Hour楼主2023/10/6 20:18

为了快速求调,我决定调完就弄粉福

代码

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#define int long long
#define short unsigned long long
using namespace std;
string a;
int n,k;
short dp[80][10][160]={};
vector<short> tmp(80);
bool flag;
signed main(){
    cin>>n>>k>>a;
    for(int i=0;i<n;i++){
        for(int j=0;j<=k;j++){
        	if(j==0){
        		for(int l=0;l<=i;l++){
        			dp[i][j][l]=a[l];
				}
			} 
            else if(j>i){}
            else{
            	for(int l=0;l<i;l++){
            	    //tmp.clear();
            	    for(int c1=0;c1<80;c1++){
            	    	for(int c2=c1+l+1;c2<c1+i+1;c2++){
            	    		tmp[c1+c2]=dp[l][j-1][c1]*(a[c2]-'0');
						}
					}
					for(int c1=1;c1<80;c1++){
						tmp[c1]+=tmp[c1-1]/10;
						tmp[c1-1]%=10;
					}
					for(int c1=80;c1>=0;c1--){
						if(tmp[c1]<dp[i][j][c1]){
							break;
						}
						if(tmp[c1]>dp[i][j][c1]){
							flag=1;
							break;
						}
					}
					if(flag){
						for(int c1=0;c1<80;c1++){
							dp[i][j][c1]=tmp[c1];
						}
					}
					//dp[i][j]=max(dp[i][j],dp[l][j-1]*getint(l+1,i));
            	}
			}
            //int128put(dp[i][j]);
            //cout<<" ";
        }
        //cout<<endl;
    }
    //long long ans=dp[n-1][k-1];
    //cout<<ans<<endl;
    flag=0;
    for(int i=79;i>=0;i--){
    	if(dp[n-1][k][i]){
    		flag=1;
		}
		if(flag){
			cout<<dp[n-1][k][i];
		}
	}
    return 0;
}
2023/10/6 20:18
加载中...