题面(from luogu)
丢失的牛
FJ丢失了他的一头牛,他决定追回他的牛。已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动。FJ的行走方式很特别:他每一次可以前进一步、后退一步或者直接走到2*x的位置。计算他至少需要几步追上他的牛。
输入格式:
第一行为一个整数t(≤10),表示数据组数;接下来每行包含一个两个正整数 x和y(0<x,y≤10^5),分别表示FJ和牛的坐标。
输出格式:
对于每组数据,输出最少步数。
样例 .in
1
5 17
样例.out
4
题目分析
又是一道雷同的题目(https://blog.youkuaiyun.com/c_uizrp_dzjopkl/article/details/82186601)
最近做了很多好像的题目,感觉越来越有手感了(我膨胀了 ?) )
题目的大体思路和上面链接的POJ的一题是一样的,但是在这一题上面,我们要注意一下,他是多组数据的输入,所以外面还要套一层循环
代码
#include <bits/stdc++.h>
using namespace std;
//用结构体来存储状态
struct node
{
int now; //当前到哪里了
int cnt; //目前走了多少步了
}q,p; //q是工具性的结构体,p是当前的答案
int vis[400010],n,k,a[200000]; //vis判断去过哪些点,a是最终存所有答案的数组
int main()
{
int t;
queue<node>line; //建队列(line是(名词)队的意思)
cin>>t; //输