[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模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
随机推荐
- 新大陆NB-IoT模块烧写详细过程
NB-IOT 模块板设置 1. NB-IOT 模块板如下 2.将模块上红色开关 1. 2 向下拨, 3. 4 开关向上拨,如下 3.将黑色开关向左侧拨至 M3 芯片处,如下 4.将模块上启动/下载开关 ...
- JUC常用同步工具类——CountDownLatch,CyclicBarrier,Semaphore
在 JUC 下包含了一些常用的同步工具类,今天就来详细介绍一下,CountDownLatch,CyclicBarrier,Semaphore 的使用方法以及它们之间的区别. 一.CountDownLa ...
- 2020年ubuntu sever1804 安装和配置
最后一次折腾linux服务器,应该是13的我的VPS.因为转行后,没有及时关注vps续费的问题,结果过期,所有的数据丢失了 当时觉得,反正都不做了,丢了就丢了吧,可现在想起来,实在是太后悔了. 今天, ...
- Hyperledger Fabric1.4环境搭建
参考文档:https://www.cnblogs.com/cbkj-xd/p/11067790.html 1. 设置下载源为阿里源 sudo vim /etc/apt/sources.list 在配置 ...
- echarts-liquidfill 水球显示小数点
使用echarts-liquidfill.js的水球,水球上显示的文字可以使用chartOption.series[0].label.normal.formatter设置,想显示什么显示什么. var ...
- springboot项目中接口入参的简单校验
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- mybatis返回自增主键踩坑记
背景 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map ...
- Javaweb编程
首先是题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要 ...
- 基于Ubuntu的ORB-SLAM2项目环境搭建过程
目录 关于ORB-SLAM2 环境搭建 已有环境 创建环境 新建项目目录 安装Pangolin 安装OpenCV 3.2 安装Eigen DBoW2 and g2o (Included in Thir ...
- MyBatis框架——逆向工程
什么是逆向工程? 逆向工程师MyBatis提供的一种自动化配置方案,针对数据表自动生成MyBatis所需的各种资源,包括实体类.Mapper接口.Mapper.xml,但是逆向工程的缺陷在于只能针对单 ...