4428: [Nwerc2015]Debugging調試

#include<bits/stdc++.h>
#define N 1000100
using namespace std;
long long f[N],x,y;
int n;
long long dfs(int p){
    if(f[p]!=-1) return f[p];
    if(p==1) return f[p]=0;
    f[p]=x+y*(p-1);
    for(int i=2;i<p;i=(p-1)/((p-1)/i)+1){
        f[p]=min(f[p],y*i-y+dfs((p-1)/i+1)+x);
    }
    return f[p];
}
int main(){
    memset(f,-1,sizeof(f));
    scanf("%d%lld%lld",&n,&x,&y);
    printf("%lld\n",dfs(n));
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章