MnZn 求调 洛谷AC/POJ WA
查看原帖
MnZn 求调 洛谷AC/POJ WA
344700
myEnd楼主2022/11/20 01:22

洛谷这道题 AC 了,POJ 不知道为啥 WA 掉了:

https://vjudge.net/solution/39728026/origin

https://vjudge.net/solution/39728026

代码如下:

#include<iostream>
#include<bitset>
#include<vector>
#include<map>
#include<queue>
using namespace std;

long long n, k, ans;

bitset<100177> vis;

struct Nd
{
	long long val;
	int stp;
	
	Nd(const long long & val, const int& stp): val(val), stp(stp) {	}
	Nd(): stp(0) { }
};

inline void bfs()
{
	if(n >= k) return (ans=n-k, void());
	vis.reset();
	queue<Nd> Q;
	Q.push(Nd(n, 0));
	vis[n] = true;
	while(!Q.empty())
	{
		Nd frn = Q.front(); Q.pop();
		int stp = frn.stp;
		if(frn.val == k)
		{
			ans = stp;
			return ;
		}
		if(frn.val+1 <= k && !vis[frn.val+1])
		{
			vis[frn.val+1] = true;
			Q.push(Nd(frn.val+1, stp+1));
		}
		if(frn.val-1 >= 1 && !vis[frn.val-1])
		{
			vis[frn.val-1] = true;
			Q.push(Nd(frn.val-1, stp+1));
		}
		if((frn.val*2 <= k*3/2 || frn.val*2 < 100017) && !vis[frn.val*2])
		{
			vis[frn.val*2] = true;
			Q.push(Nd(frn.val*2, stp+1));
		}
	}
}

signed main()
{
	cin >> n >> k;
	bfs();
	cout << ans << endl;
	return 0;
}

拍了好久也没拍出来哪里寄了。

(或者是 poj 的锅(?

2022/11/20 01:22
加载中...