草庐IT

蓝桥杯刷题冲刺 | 倒计时19天

指针不指南吗 2023-04-03 原文

作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺

🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾

文章目录

1.抓住那头牛

  • 题目

    链接: 抓住那头牛 - C语言网 (dotcpp.com)

    题目描述

    农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000)。农夫有两种移动方式:

    输入格式

    两个整数,N和K。

    输出格式

    一个整数,农夫抓到牛所要花费的最小分钟数。

    样例输入

    5 17
    

    样例输出

    4
    
  • 第一次 AC 50%

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int n,k;
    	scanf("%d%d",&n,&k);
    	
    	if(n==k)
    	{
    		printf("0");
    		return 0;
    	}
    	
    	if(n>k)
    	{
    		printf("%d",n-k);
    		return 0;
    	}
    	
    	if(n<k)
    	{
    		printf("%d",max(1+n-k,k-n));
    		return 0; 
    	}
    	
    	return 0;
     } 
    
  • 第二次 AC 50%

    #include<bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    	int n,k;
    	scanf("%d%d",&n,&k);
    	
    	if(n==k)
    	{
    		printf("0");
    		return 0;
    	}
    	
    	if(n>k)
    	{
    		printf("%d",n-k);
    		return 0;
    	}
    	
    	if(n<k)
    	{
    		int x=n,cnt=0;
    		while(x<k)
    		{
    			x*=2;
    			cnt++;
    		}
    		
    		if(cnt+k-x<0)
    		{
    			printf("%d",min(k-n,cnt+x-k));
    			return 0;
    		}
    		else
    		{
    			int c=min(k-n,cnt+x-k);
    			printf("%d",min(c,cnt+k-x));
    			return 0;
    		}
    		
    	}
    	
    	return 0;
     } 
    
  • DFS 题解

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,k;
    
    //深度搜索
    int dfs(int t) //n到t的时间 
    {
    	//不能乘车 
    	if(t<=n) 
    		return n-t;
    	
        //目标地分情况:奇数和偶数
        //为什么这么分呢?
        //偶数可以直接到,直接一步一步走那里
        //奇数:分成,到t前面往后退一步,到t后面,往前走一步
    	if(t%2==1)
    	{
    		return min(dfs(t-1)+1,dfs(t+1)+1);
    	}
    	else
    	{
    		return min(dfs(t/2)+1,t-n);
    	}
    	
    }
    
    
    int main()
    {
    	
    	cin>>n>>k;
    	
    	int s=0;
    	
    	if(n==0)  //特判一下,如果n==0,2x没有用,抓牛过程中无论如何至少会往前走一步
    	{
    		n++;
    		s++;
    	}
    	
    	s+=dfs(k);
    	
    	cout<<s<<endl;
    	
    	return 0;
     } 
    
  • 我的 low BFS

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,k;
    
    //bfs 可以走的点放进队列里面,走没走过的点,然后走到想要的结果
     
     int d[100010];
     
     bool st[100010]; 
     
    int bfs()
    {
    	queue<int> q;
    	q.push(n);
    	
    	memset(d,-1,sizeof d);
    	
    	while(q.size())
    	{
    		int t=q.front();
    		q.pop();
    		
    		//分情况 
    		if(t==k) return 0;
    		//扩展  三种情况
    		q.push(t+1);
    		q.push(t-1);
    		q.push(2*t);
    		d[t];
    	}
    	return d[k];
    	
    }
    
    int main()
    {
    	cin>>n>>k;
    	
    	cout<<bfs(); 
    	
    	return 0;
    }
    

别笑emmm,我也不知道我写的是个什么

  • 正确 BFS

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    const int MAXN=100001;
    struct status{
        int n,t;
        status(int n,int t)
        {
            n=n;
            t=t;
        }
    };
    bool visit[MAXN];
     
    int BFS(int n,int k){
        queue<status> myqueue;
        myqueue.push(status(n,0));//压入初始状态
        visit[n]=true; //起始点已被访问
        while(!myqueue.empty())
        {
            status current=myqueue.front();
            myqueue.pop();
            if(current.n==k)//查找成功
                return current.t;
            for(int i=0;i<3;i++)//转入不同状态 
            {
                status next(current.n,current.t+1);
                if(i==0)
                    next.n+=1;
                else if(i==1)
                    next.n-=1;
                else
                    next.n*=2;
                if(next.n<0||next.n>=MAXN||visit[next.n])
                    continue;//新状态不合法
                myqueue.push(next);//压入新的状态
                visit[next.n]=true;//该点已被访问
            } 
        }
    }
    int main()
    {
        int n,k;
        cin>>n>>k;
        memset(visit,false,sizeof(visit));//初始化;
        cout<<BFS(n,k)<<endl;
        return 0;
    }
    

    正在进一步的理解 这个BFS算法,还没有完全掌握

  • 反思

    一开始把这道题想成简单的模拟了,可以 AC 50%,还ok

    • 模拟过程中,第一次没有考虑全面

    后面又改了一次,还是不行,看题解

    真没想到,这个使用的是 dfs 和bfs ,果然做的题还是太少了

    • dfs 递归回溯
    • bfs 不断扩展 直到找到结果

2.排列序数

今天新学的知识点,跟大家分享一下,特别帅

先输入字符串 s ,然后使用 next_permutation() 输出全排列,当全排列与初始字符串相等时结束

#include<bits/stdc++.h>
using namespace std;


int main()
{
	string s="bac";
	
	sort(s.begin(),s.end());
	
	do{
		cout<<s<<endl;
	}while(next_permutation(s.begin(),s.end()));
	
	
	return 0;
}

s=“12345”,也是可以的

有关蓝桥杯刷题冲刺 | 倒计时19天的更多相关文章

  1. ruby - Ruby 性能中的计时器 - 2

    我正在寻找一个用ruby​​演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent

  2. 蓝桥杯备赛(二) - 2

    目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言:  在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC  已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析  这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy

  3. ruby-debug19 : Can't get working with Ruby 1. 9.1p376 - 2

    我正在尝试将ruby​​-debug19与Ruby1.9.1p376一起使用,但出现以下错误:test.rb:2:in`require':nosuchfiletoload--ruby-debug19(LoadError)fromtest.rb:2:in`'这是测试.rb:require'rubygems'require'ruby-debug19'这是“gemlist”的输出:***LOCALGEMS***ruby-debug19(0.11.6)(etc.)因此运行“rubytest.rb”会产生上述错误。我做错了吗?我认为这是运行ruby​​-debug19的正确方法(通过包含gem并

  4. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  5. ruby-on-rails - 遵循 DCI 设计时在哪里进行验证? - 2

    我正在按照DCI构建新Rails应用程序的行为,但我对将验证放在哪里有一些疑问。传统上,如果您要使用ActiveRecord模型管理您的数据,验证是在继承自AR的特定类中定义的,并且它们似乎适合作为数据层的一部分。然而,在我看来,只在特定角色下进行某些验证是有意义的,并且只有当对象在该上下文中时才应检查它们,在所有其他情况下都将被忽略。这基本上意味着这些验证应该在特定角色上定义,并且当对象在有意义的上下文中使用时,应该使用这些角色模块扩展对象。您认为将这些验证保留在角色上是个好主意吗?如果是这样,您如何声明它们而不污染与对象相同的类的其他实例?如果我想使用ActiveRecord验证,

  6. ruby-on-rails - 安装pg(0.19.0)时出错,Bundler无法继续 - 2

    昨天我安装了Ubuntu16.04.1。ruby2.3.1p112(2016-04-26修订版54768)[x86_64-linux]rails-v'4.2.6'创建一个Rails项目运行bundle出现错误:Errno::EACCES:Permissiondenied@rb_sysopen-/home/zeus/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pg-0.19.0/.gemtestAnerroroccurredwhileinstallingpg(0.19.0),andBundlercannotcontinue.Makesur

  7. 十四届蓝桥青少组模拟赛Python-20221108 - 2

    十四届蓝桥青少组模拟赛Python-20221108T1.二进制位数十进制整数2在十进制中是1位数,在二进制中对应10,是2位数。十进制整数22在十进制中是2位数,在二进制中对应10110,是5位数。请问十进制整数2022在二进制中是几位数?print(len(bin(2022))-2)#运行结果:11T2.晨跑小蓝每周六、周日都晨跑,每月的1、11、21、31日也晨跑。其它时间不晨跑。已知2022年1月1日是周六,请问小蓝整个2022年晨跑多少天?#样例代码1ls=[0,31,28,31,30,31,30,31,31,30,31,30,31]ans=0k=6foriinrange(1,13)

  8. 蓝桥杯 stm32 MCP4017 - 2

    本文代码使用HAL库。文章目录前言一、MCP4017的重要特性二、MCP4017计算RBW阻值三、MCP4017地址四、MCP4017读写函数五、CubeMX创建工程(利用ADC测量MCP4017电压)、对应代码:总结前言一、MCP4017的重要特性蓝桥杯板子上的是MCP4017T-104ELT,如图1。MCP4017是一个可编程电阻,通过写入的数值可以改变电阻的大小。重点在于6引脚(W),5引脚(B&#

  9. [蓝桥杯单片机]学习笔记——串口通信的基本原理与应用 - 2

    目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式  2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器​编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置  3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一

  10. 玩客云刷机(2022-3-19亲测) - 2

    https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入

随机推荐