🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾
文章目录
题目
题目描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点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 不断扩展 直到找到结果
今天新学的知识点,跟大家分享一下,特别帅
先输入字符串 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”,也是可以的

我正在寻找一个用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
目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言: 在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC 已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析 这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy
我正在尝试将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并
?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是: 如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。 如果m不为0,则将时读出来,然后将分读出来,如5
我正在按照DCI构建新Rails应用程序的行为,但我对将验证放在哪里有一些疑问。传统上,如果您要使用ActiveRecord模型管理您的数据,验证是在继承自AR的特定类中定义的,并且它们似乎适合作为数据层的一部分。然而,在我看来,只在特定角色下进行某些验证是有意义的,并且只有当对象在该上下文中时才应检查它们,在所有其他情况下都将被忽略。这基本上意味着这些验证应该在特定角色上定义,并且当对象在有意义的上下文中使用时,应该使用这些角色模块扩展对象。您认为将这些验证保留在角色上是个好主意吗?如果是这样,您如何声明它们而不污染与对象相同的类的其他实例?如果我想使用ActiveRecord验证,
昨天我安装了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
十四届蓝桥青少组模拟赛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)
本文代码使用HAL库。文章目录前言一、MCP4017的重要特性二、MCP4017计算RBW阻值三、MCP4017地址四、MCP4017读写函数五、CubeMX创建工程(利用ADC测量MCP4017电压)、对应代码:总结前言一、MCP4017的重要特性蓝桥杯板子上的是MCP4017T-104ELT,如图1。MCP4017是一个可编程电阻,通过写入的数值可以改变电阻的大小。重点在于6引脚(W),5引脚(B
目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式 2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置 3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一
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写入