[noip模拟]计蒜姬<BFS>
Description
中的数字取出,进行如下四种运算的一种后,将结果放回寄存器中。
1.X=X+X
2.X=X-X
3.X=X*X
4.X=X/X
已知初始时寄存器里的值为A,兔纸们想要知道,是否能通过若干次操作,使得最终寄存器
里的值是B。如果可能,它们还想知道最少的操作次数。
Input
包含两个正整数A,B。
1 ≤ A,B ≤ 1000000000
Output
Sample Input
3 4
Sample Output
3
//
第一次:3/3=1
第二次:1+1=2
第三次:2*2=4 ------------------------------------------------------分割线-----------------------------------------
最近有一种一巴掌拍死自己的冲动,我刚刚开始看到这道题,心想简单呗,就是一个BFS呗,最多加一点优化呗,于是两天过去了。。。。在我濒临崩溃之际,他终于过了 这道题虽然很简单,但是还是很有意思的,比较考思维,吃一蛰长一智,我很感谢自己把这道题坚持下来了
我一开始用的是很普通的BFS,一开始是超时,接着我把b为2的次方的情况给优化成O(1)的复杂度,但是还是要超时,百般无奈下,我看了题解
不得不说,很机智,反向BFS。。。。。。。
因为正向来的,a一不小心就会大于b,然后无限延伸下去,而反向来的话,当b到1就是极限了,所以总体来说的话缩小比加倍更加的优化
当我一个全新的程序出来以后,我还是一直WA,后来用Pascal程序提交算是过了,后来检查C++程序才终于发现,原来我忘了考虑a,b相等的情况 思路:反向缩小b,如果当
前值等于a就输出步数,值为1就输出步数+1,如果开平方和除以2都不能得到整数1就输出-1 我就提供一个反向BFS程序,正向的等我再去研究研究hash判重再说
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<iostream>
#include<cstdlib>
#include<cmath>
#define maxn 500000000
using namespace std; int a,b;
struct node{
int val,dep;
};
queue<node>q; int check(node x)
{
if(x.val==a)return x.dep;
if(x.val==)return x.dep+;
return ;
} int main()
{
scanf("%d%d",&a,&b);
if(a==b)
{
printf("");return ;
}
q.push((node){b,});
while(!q.empty())
{
node x=q.front();
q.pop();
if(x.val%==)q.push((node){x.val/,x.dep+});
int nxt=floor(sqrt(x.val*1.0));
if(pow(nxt,)==x.val&&nxt!=)q.push((node){nxt,x.dep+});
if(check(x)!=){
printf("%d",check(x));return ;
} }
printf("-1");
}
[noip模拟]计蒜姬<BFS>的更多相关文章
- A1139-引爆炸弹 计蒜客 bfs剪枝
题目链接 https://nanti.jisuanke.com/t/A1139 在一个 n \times mn×m 的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上 ...
- 一些noip模拟题一句话题解
Problem A: 序列 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 12 Solved: 9[Submit][Status][Web Boar ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
- 计蒜客T2202 数三角形(提高组2017模拟赛(三)day2T3) LZOJ3878攻略
今天模拟赛考了一道计蒜客NOIP2017模拟赛(三)day2T3的数三角形,原题链接 https://nanti.jisuanke.com/t/T2202 ,LZOJ3878攻略.场上想了很久都没转化 ...
- 计蒜客模拟赛5 D2T1 成绩统计
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...
- 计蒜客 31436 - 提高水平 - [状压DP]
题目链接:https://nanti.jisuanke.com/t/31436 作为一名车手,为了提高自身的姿势水平,平时的练习是必不可少的.小 J 每天的训练包含 $N$ 个训练项目,他会按照某个顺 ...
- 计蒜客 31434 - 广场车神 - [DP+前缀和]
题目链接:https://nanti.jisuanke.com/t/31434 小 D 是一位著名的车手,他热衷于在广场上飙车.每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛. 小 D 所 ...
- [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】
Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...
- NOIP模拟赛-2018.11.7
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
随机推荐
- 前端面试题-<!DOCTYPE>
现在的各种前端开发工具都足够强大,支持插入模板代码,也就导致我们往往会忽略已经自动生成的代码,而代码的第一行 DOCTYPE 声明,就是最容易忽略的部分. 一.DOCTYPE DOCTYPE 是 do ...
- JZOJ 5246. 【NOIP2017模拟8.8A组】Trip(trip)
5246. [NOIP2017模拟8.8A组]Trip(trip) (File IO): input:trip.in output:trip.out Time Limits: 1500 ms Memo ...
- SpringBoot1.5.10.RELEASE整合druid
1.先在pom文件中导入druid的jar包 <dependency> <groupId>com.alibaba</groupId> <artifactId& ...
- jenkins-构建job成功后自动打tag到git仓库
需求:最近开发同事提出了个要求,每当Jenkins执行上线部署完成后,对当前代码进行自动打TAG到git仓库中,且只有当部署成功后才进行打TAG,防止构建失败也进行打过多的垃圾tag,然后便于下次进行 ...
- HDFS NameNode详解
1. namenode介绍 namenode管理文件系统的命名空间.它维护着文件系统树及整棵树内所有的文件和目录.这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件fsimage和编辑日志文 ...
- GPS信号模拟器信号发生器应用介绍
GPS信号模拟器信号发生器应用介绍 随着近些年的科学技术不断发展,卫星导航技术也在日益发展和成熟,并在不同领域得到广泛的应用.尤其在导航定位接收机的研制测试阶段,就需要GPS信号模拟器来模拟不同环境和 ...
- Python学习字典.基础三
元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中要定义的元组中只有一个元素需要再元素后面加逗号,用来消除数学歧义.例 t=(1,) ...
- selenium+chromdriver 动态网页的爬虫
# 获取加载更多的数据有 2 种方法# 第一种就是直接找数据接口, 点击'加载更多' 在Network看下, 直接找到数据接口 # 第二种方法就是使用selenium+chromdriver # se ...
- .NET实现一个简单的IOC容器
目录 1.主要细节 2.具体示例 参考及示例代码下载 shanzm-2020年3月17日 20:06:01 1.主要细节 使用反射程序集的方式获取对象的类型 通过反射的方式获取指定类型的的所有公共属性 ...
- vue缓存当前路由(在输入框中输入信息后,跳转其他路由再回来,仍可看到刚刚输入的内容等)
缓存路由页面的当前状态: <transition name="fade" mode="out-in"> <keep-alive> & ...