problem description
小瑩瑩被困在了乙個由 n 個石柱圍成一圈組成的迷宮裡,也就是 1, 2, 3, … n, 1, 2, 3, …. 這樣一直迴圈。
她起始位置是 1,每次只能沿著順時針方向選擇飛躍 a 或者 b 距離的魔法,也就是從當前石柱 i 飛往 i+a 石柱或者 i+b 石柱。
第 m 個石柱有傳送門,她只有到達第 m 個石柱,才能從這個迷宮逃脫出去。
問你小瑩瑩能否能順利的逃離迷宮,如果不能輸出 「no」.
如果能輸出 「yes」,同時問你小瑩瑩最少需要使用幾次魔法?
input
第一行輸入正整數 t 代表有 t 組測試資料。
對於每一組測試資料:
第一行輸入由空格隔開的 n, m 代表石柱的數量和所需到達的石柱。
第二行輸入由空格隔開的 a, b 代表兩個魔法,乙個可以飛躍 a 距離,乙個可以飛躍 b 距離。
( 1 <= n <= 1e5, 0 <= a, b < n, 1 <= m <= n, t 組資料 n 的和 <= 5e6 )
output
如果小瑩瑩順利逃離迷宮:
第一行輸出:」yes」
第二行輸出:小瑩瑩最少使用魔法次數。
如果小瑩瑩無法逃離迷宮:
第一行輸出:」no」
答案不包含 「」。
sample input
38 6
2 34 3
4 34 4
2 2sample output
yes2
yes2
no
hintsource
satw_zg
#include using namespace std;
int bfs(int a, int b, int c, int d, int e);
const int maxn = 100010;
int cnt[maxn];//每個點到初始位置要幾步
bool vis[maxn];//標記該點有沒有走過
int main()
else
}return 0;
}int bfs(int a, int b, int c, int d, int e)
k = (s + c)%e;//跳躍c
if(k == 0)k = e;
if(!vis[k])
k = (s + d)%e;//跳躍d
if(k == 0)k = e;
if(!vis[k])
}return -1;
}
魔法少女小Scarlet
scarlet最近學會了乙個陣列魔法,她會在n n二維陣列上將乙個奇數階方陣按照順時針或者逆時針旋轉90 首先,scarlet會把1到n2 的正整數按照從左往右,從上至下的順序填入初始的二維陣列中,然後她會施放一些簡易的魔法。scarlet既不會什麼分塊特技,也不會什麼splay套splay,她現在...
魔法少女(動態規劃)
討論區 魔法少女 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述前些時間虛淵玄的鉅獻小圓著實火了一把。在黑長直 小炎 往上爬樓去對抗魔女之夜時,她遇到了乙個問題想請你幫忙。因為魔女之夜是懸浮在半空的,所以她必須要爬樓,而那座廢墟一共有n層,而且每層高度不同,這造成小炎爬每層的...
nyoj 1204 魔法少女
動態規劃 dp i 0 表示i層不用魔法的最少步數 dp i 1 表示i層用魔法的最少步數 dp i 0 min dp i 1 0 dp i 1 1 a i dp i 1 min dp i 1 0 dp i 2 0 dp 0 1 dp 1 1 0 dp 0 0 h 0 dp 1 0 h 1 incl...