2 条题解

  • 0
    @ 2024-2-1 14:10:08
    #include <iostream>
    #include<bits/stdc++.h>
    #define int long long
    const int INF=0x3f3f3f3f;
    using namespace std;
    
    int n,m;
    int minn=INF;
    void dfs(int r, int h, int v,int s,int step){
        if(step==m+1){
        	if(v==n){
        		minn=min(minn,s);
    		}
    		return;
    	}
    	if(v+m-step+1>n) return;
    	if(v+(m-step+1)*((r-1)*(r-1)*(h-1))<n) return;
    	if(s+2*(n-v)/r>=minn) return;
    	for(int i=r-1;i>=m-step+1;i--){
    		for(int j=h-1;j>=m-step+1;j--){
    			dfs(i,j,v+i*i*j,s+2*i*j,step+1);
    		}
    	}
    }
    signed main(){
        cin>>n>>m;
        for(int i=m;i*i*m<=n;i++){
        	for(int j=m;j<=n;j++){
        		if(2*i*j+i*i<minn){
        			dfs(i,j,i*i*j,2*i*j+i*i,2);
    			}
    		}
    	}
    	if(minn!=INF){
    		cout<<minn;
    	}else{
    		cout<<0;
    	}
        return 0;
    }
    

    信息

    ID
    79
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    68
    已通过
    36
    上传者