1105 過河
2005年NOIP全國聯賽提高組
時間限制: 1 s
空間限制: 128000 KB
題目等級 : 鑽石 Diamond
題解
題目描述 Description
在河上有一座獨木橋,一隻青蛙想沿着獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很讨厭踩在這些石子上。由于橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點:0,1,……,L(其中L是橋的長度)。坐标為0的點表示橋的起點,坐标為L的點表示橋的終點。青蛙從橋的起點開始,不停的向終點方向跳躍。一次跳躍的距離是S到T之間的任意正整數(包括S,T)。當青蛙跳到或跳過坐标為L的點時,就算青蛙已經跳出了獨木橋。
題目給出獨木橋的長度L,青蛙跳躍的距離範圍S,T,橋上石子的位置。你的任務是确定青蛙要想過河,最少需要踩到的石子數。
輸入描述 Input Description
輸入第一行有一個正整數L(1<=L<=109),表示獨木橋的長度。第二行有三個正整數S,T,M,分别表示青蛙一次跳躍的最小距離,最大距離,及橋上石子的個數,其中1<=S<=T<=10,1<=M<=100。第三行有M個不同的正整數分别表示這M個石子在數軸上的位置(資料保證橋的起點和終點處沒有石子)。所有相鄰的整數之間用一個空格隔開。
輸出描述 Output Description
輸出隻包括一個整數,表示青蛙過河最少需要踩到的石子數。
樣例輸入 Sample Input
10
2 3 5
2 3 5 6 7
樣例輸出 Sample Output
2
資料範圍及提示 Data Size & Hint
資料規模
對于30%的資料,L<=10000;
對于全部的資料,L<=109。
這道題去年暑假考過,今天剛弄明白。
不難看出,10^9不是随便開個數組就能解決的,但石子個數最多隻有100個,這就為離散化提供了條件。
橋很長,石子很少,是以可能某兩個石子之間距離特别大,如果這個距離大過了所有可能走的步數的最小公倍數,那麼就可以直接截掉這一塊(無論怎麼走結果都相同),于是問題得到解決。
由于s和t都是1~10的數,是以索性把1~10的數的乘積2520作為模,來截獨木橋