对拍没错,第四个点WA
查看原帖
对拍没错,第四个点WA
349906
封禁用户楼主2021/7/29 17:07
#include <iostream>
#include<queue>
#include<algorithm>
using namespace std;
queue<pair<int,int> > q;
int n,k,a,b;
int ans=(int)2e9+10;
void bfs(){
    q.push(make_pair(n-1,a));
    if(n%k==0)q.push(make_pair(n/k,b));
    while(!q.empty()){
        int x=q.front().first;
        int v=q.front().second;
        q.pop();
        if(x==1){ans=min(ans,v);continue;}
        if(v>ans)continue;

        if(x>0)q.push(make_pair(x-1,v+a));
        if(x%k==0)q.push(make_pair(x/k,v+b));
    }
}
int main()
{

    cin>>n>>k>>a>>b;
    bfs();
    if(ans==(int)2e9+10)cout<<0;
    else cout<<ans;
    return 0;
}

谢谢大佬,就一个不同的BFS。。。

2021/7/29 17:07
加载中...