2021GDCPC广东省大学生程序设计竞赛 J.Jerry(bfs)

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021GDCPC广东省大学生程序设计竞赛 J.Jerry(bfs)相关的知识,希望对你有一定的参考价值。

题意:

在这里插入图片描述

解法:

预处理平方数,只有sqrt(1e5).
然后从0点开始bfs,计算出到达每个距离需要的最少操作次数,对于每组询问O(1)输出即可.

code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=1e5+5;
vector<int>temp;
int mark[maxm];
int d[maxm];
void solve(){
    for(int i=1;i*i<=1e5;i++){
        temp.push_back(i*i);
    }
    queue<int>q;
    q.push(0);
    mark[0]=1;
    while(q.size()){
        int x=q.front();q.pop();
        for(auto i:temp){
            if(x+i<=1e5&&!mark[x+i]){
                mark[x+i]=1;
                d[x+i]=d[x]+1;
                q.push(x+i);
            }
            if(x-i>=0&&!mark[x-i]){
                mark[x-i]=1;
                d[x-i]=d[x]+1;
                q.push(x-i);
            }
        }
    }
    int T;cin>>T;
    while(T--){
        int x;cin>>x;
        cout<<d[x]<<endl;
    }
}
signed main(){
    ios::sync_with_stdio(0);cin.tie(0);
    solve();
    return 0;
}

以上是关于2021GDCPC广东省大学生程序设计竞赛 J.Jerry(bfs)的主要内容,如果未能解决你的问题,请参考以下文章

2021GDCPC广东省大学生程序设计竞赛 A An Easy Problem 堆优化

2021GDCPC广东省大学生程序设计竞赛 A.An Easy Problem(二分)

第十六届全国大学生智能车竞赛广东赛区线上竞赛方案

高分!!电子竞赛

2021年第十六届全国大学生智能汽车竞赛线上比赛的广东山东赛区赛道铺设规范

第十一届山东省大学生程序设计竞赛