HIHOCODER 1599 逃離迷宮4

2022-07-26 10:06:10 字數 1310 閱讀 7923

小hi被壞女巫抓進一座由無限多個格仔組成的矩陣迷宮。

小hi一開始處於迷宮(x, y)的位置,迷宮的出口在(a, b)。小hi發現迷宮被女巫施加了魔法,假設當前他處在(x, y)的位置,那麼他只能移動到(x+y, y)或者(x, x+y)的位置上。

小hi想知道自己能不能逃離迷宮。

第一行包含乙個整數t,代表測試資料的組數。

以下n行每行包含4個整數x, y, a, b,表示起點在(x, y),出口在(a, b)。

對於30%的資料,1 ≤ t ≤ 10, 1 ≤ x, y, a, b ≤ 100

對於80%的資料,1 ≤ t ≤ 1000, 1 ≤ x, y, a, b ≤ 1000

對於100%的資料,1 ≤ t ≤ 10000, 1 ≤ x, y, a, b ≤ 109

對於每組資料輸出一行yes或者no,表示小hi是否能逃離迷宮。

2  

1 1 8 13

2 2 100 101

yes  

no

倒著考慮,就是每次

\[(a,b) \rightarrow (a-b,b)

\]或者

\[(a,b) \rightarrow (a,b-a)

\]每次都是大的減小的,而且每次都得減到小於等於小的那個數。

如果(a,b)都沒有與(x,y)相等,直接取模就好,因為大的一直要減小的,而且這其中不會出現(x,y)。

如果(a,b)其中乙個與(x,y)相等,那麼另乙個與之差值只有在能夠整除它的情況下,才會得到(x,y)。

#include #define ll long long

#define inf 1000000000

#define pi acos(-1)

#define bug puts("here")

#define rep(i,x,n) for(int i=x;i<=n;i++)

#define dep(i,n,x) for(int i=n;i>=x;i--)

#define mem(a,x) memset(a,x,sizeof(a))

using namespace std;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}int x,y;

bool check(int a,int b)else

return false;

}int main()

return 0;

}

hihocoder 1519 逃離迷宮II

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi被壞女巫抓進裡一間有n x m個格仔組成的矩陣迷宮。有些格仔是小hi可以經過的,我們用 表示 有些格仔上有障礙物小hi不能經過,我們用 表示。小hi的起始位置用 s 表示,他需要到達用 t 表示的格仔才能逃離迷宮。麻...

hihocoder 1519 逃離迷宮II

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi被壞女巫抓進裡一間有n x m個格仔組成的矩陣迷宮。有些格仔是小hi可以經過的,我們用 表示 有些格仔上有障礙物小hi不能經過,我們用 表示。小hi的起始位置用 s 表示,他需要到達用 t 表示的格仔才能逃離迷宮。麻煩的...

dfs bfs 逃離迷宮

給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...