首页 > 其他分享 >抓住那头牛

抓住那头牛

时间:2023-07-23 09:22:56浏览次数:23  
标签:头牛 int step vis tail newwz news 抓住

1.

#include <bits/stdc++.h>
#define N 100001
using namespace std;
bool vis[N];
int dir[2]={-1,1};
struct node
{
    int x;
    int step;
}q[N];
void bfs(int n,int k)
{
    int head=1,tail=1;
    vis[n]=1;
    q[tail].x=n;
    q[tail].step=0;
    tail++;
    while(head<tail)
    {
        int x=q[head].x;
        int step=q[head].step;
        if(x==k)
        {
            cout<<step;
            break;
        }
        for(int i=0;i<2;i++)
        {
            int nx=x+dir[i];
            if(1<=nx and nx<=N and vis[nx]==0)
            {
                vis[nx]=1;
                q[tail].x=nx;
                q[tail].step=step+1;
                tail++;
            }
        }
        int nx=2*x;
        if(1<=nx and nx<=N and vis[nx]==0)
        {
            vis[nx]=1;
            q[tail].x=nx;
            q[tail].step=step+1;
            tail++;
        }
        head++;
    }
}
int main()
{
    int n,k;
    cin>>n>>k;
    if(k<n)
    {
        cout<<n-k;
    } 
    else
    {
        bfs(n,k);
    }
    return 0;
}

2.

# include <bits/stdc++.h>
using namespace std;
const int maxN=1e5+1;
struct node{
    int wz,step;
    //string s;
};
queue<node>Q;
int n,k;
int vis[2*maxN];
void bfs(int start){
    Q.push({start,0});
    vis[start]=1; 
    while (!Q.empty()){
        int touwz=Q.front().wz;
        int toustep=Q.front().step;
        //string tous=Q.front().s;
        Q.pop();
        int newwz[4];//string news[4];
        newwz[1]=touwz+1;//news[1]=tous+'A';
        newwz[2]=touwz-10;//news[2]=tous+'B';
        newwz[3]=touwz*2;//news[3]=tous+'C';
        int newstep=toustep+1;    
        for (int i=1;i<=3;i++){    
            if (newwz[i]==k) {
                cout<<newstep<<endl;//cout<<news[i];
                return;
            } 
            else if(vis[newwz[i]]==0 && newwz[i]>0 && newwz[i]<=maxN-1) {
               Q.push({newwz[i],newstep       });
               vis[newwz[i]]=1;        //,news[i]
           }    
         }
    }
}
int main(){
    cin>>n>>k;
    if (n==k) cout<<0<<endl;
    else
       bfs(n); 
    return 0;
}

注://_____加上后可以输出路径。

标签:头牛,int,step,vis,tail,newwz,news,抓住
From: https://www.cnblogs.com/yjb20090514/p/17574673.html

相关文章

  • JavaScript引爆Salesforce职业生涯!抓住高薪机会
    Salesforce是一款领先的CRM软件,已被各种规模和行业的企业使用多年。Salesforce不仅易于使用,而且可定制,使企业能够改善其销售、营销、客户服务和其他业务流程。近年来,Salesforce一直在创新,从传统的基于Oracle的平台转变为在业界更具吸引力的解决方案。目前,许多工作可以由人工智能......
  • 1100. 抓住那头牛(bfs)
    https://www.acwing.com/problem/content/1102/数据范围为1e5实际上还可以再继续细分,加入特判来优化耗时,但是意义不大#include<iostream>#include<cstring>#include<cstdio>#include<queue>usingnamespacestd;constintN=1e5+10;intn,k;boolvis[N];int......
  • AIGC时代:超级个体的崛起,抓住这个风口
    文/高扬 今天的一则消息不知大家有没关注,中央会议精神特别提到“要重视通用人工智能发展,营造创新生态,重视防范风险。”    这表示国家层面已在重视通用人工智能的发展,也意味ChatGPT引爆的这场人工智能热潮还会持续下去。 我感觉今年的这场技术革新,很像2000年的......
  • 抓住医院信息集成平台建设核心诉求
    医院信息集成平台建设的需求,要求以支撑医院信息体系平稳运转,建立一个标准化、集成化的信息平台,达到信息资源广泛共享、互联互通的目的。医院信息平台将形成一个标准化、集成化的信息平台,对内集成临床信息系统、医院管理信息系统、电子病历浏览器,对外连接医保、公共卫生、区域......
  • 3.抓住那头牛(简单搜索 BFS)
    抓住那头牛↑题目链接题目农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点\(N\),牛位于点\(K\)。农夫有两种移动方式:从\(X\)移动到\(X−1\)或\(X+1\),每次移动花费一分钟从\(X\)移动到\(2∗X\),每次移动花费一分钟假设牛没有意识到农夫的行动,站......
  • 抓住Linux黄金60秒
    如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。uptimedmesg|tail......
  • CDGA|电力行业做好数据治理一定要抓住3个核心步骤
    电力行业近年来对数据开放、共享、融通的需求与日俱增,令电力数据安全建设的重要性也不断提高,而大数据治理作为解决数据问题的关键措施,应该怎么办呢?其实,电力行业数据治理一定要抓住三个关键步骤:自动采集各类数据资产信息对电力企业来说,要想管理好数据,首先需要获取到企业的全......
  • kuangbin专题一 简单搜索 抓住那头牛(POJ-3278)
    CatchThatCowTimeLimit:2000MS MemoryLimit:65536KTotalSubmissions:210291 Accepted:63838DescriptionFarmerJohnhasbeeninformedofthelocationofafugitivecowandwantstocatchherimmediately.HestartsatapointN(0≤N≤100,000)on......
  • 寒假每日一题——金发姑娘和N头牛(map+手写离散化)
    金发姑娘和N头牛问题描述你可能听过关于金发姑娘和三只熊的经典故事。然而,鲜为人知的是,金发姑娘最终成了一个农民。在她的农场中,她的牛棚里有N头奶牛。不幸的是,她的奶牛对温度相当敏感。对于奶牛i,使其感到舒适的温度为Ai…Bi。如果金发姑娘将牛棚的恒温器的温度T设置......
  • 紧跟潮流,抓住趋势,跟上全民AI的节奏,开源IM项目OpenIM产品介绍,为AIGC贡献力量
    开源价值高度自主、安全可控、开放自由,私有化部署,一切皆可控透明度和可信度:开源软件的源代码是公开的,任何人都可以查看和检查代码,从而增强了软件的透明度和可信度。用户......