求优化思路
查看原帖
求优化思路
1344756
ROU_bing楼主2025/6/29 20:04

42 分代码:

#include <bits/stdc++.h>
#define int long long

using namespace std;

int t,x,y,k,a[32];
int m;

int dfs(int i,int m,int ans);

signed main(){
    scanf("%lld",&t);
    while(t--){
        scanf("%lld%lld%lld",&x,&y,&k);
        m=abs(x-y);
        for(int i=0;i<=k;i++)   scanf("%d",&a[i]),a[i]=i>0?min(a[i],a[i-1]*2):a[i];
        printf("%lld\n",dfs(k,m,0));
    }
    return 0;
}

int dfs(int i,int m,int ans){
    if(!m || i<0)  return ans;
    ans+=(m/(1<<i))*a[i];
    m%=(1<<i);
    return min(dfs(i-1,m,ans),dfs(i-1,(1<<i)-m,ans+a[i]));
}

想知道怎么把 dfs 优化掉

2025/6/29 20:04
加载中...