求幫助tyvj 1059 過河

2021-08-02 21:16:17 字數 1944 閱讀 4910

過河

背景 background

noip2005 

提高組 第二道

描述 description

在河上有一座獨木橋,乙隻青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由於橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點:0,1

,……,

l(其中

l是橋的長度)。座標為

0的點表示橋的起點,座標為

l的點表示橋的終點。青蛙從橋的起點開始,不停的向終點方向跳躍。一次跳躍的距離是s到

t之間的任意正整數(包括

s,t)。當青蛙跳到或跳過座標為

l的點時,就算青蛙已經跳出了獨木橋。 

題目給出獨木橋的長度l

,青蛙跳躍的距離範圍

s,t,橋上石子的位置。你的任務是確定青蛙要想過河,最少需要踩到的石子數。 

對於30%

的資料,

l <= 10000

; 對於全部的資料,l 

<= 10^9

。輸入格式 inputformat

輸入的第一行有乙個正整數l(1 

<= l 

<= 10^9

),表示獨木橋的長度。第二行有三個正整數s,

t,m,分別表示青蛙一次跳躍的最小距離,最大距離,及橋上石子的個數,其中

1 <= s 

<= t 

<= 10,1 

<= m 

<= 100

。第三行有

m個不同的正整數分別表示這

m個石子在數軸上的位置(資料保證橋的起點和終點處沒有石子)。所有相鄰的整數之間用乙個空格隔開。

輸出格式 outputformat

輸出只包括乙個整數,表示青蛙過河最少需要踩到的石子數。 

樣例輸入 sampleinput [

複製資料]

10 2 3 5

2 3 5 6 7

樣例輸出 

sampleoutput [

複製資料]

2 這題發現自己的答案可能會爆,10^9,太大了吧,在用來標記的可以走到的位置在資料太大時就runtime error了,大家來幫我看看有沒有好的辦法,我的只能解決小資料。

我的想法是先用深搜找到所有可以走的位置,在對可以走的位置動態規劃。

#include

#include

int l[12000],p[12000],f[12000],kkk[12000];

void dfs(int x,int s,int t,int l)

}

}

int is(int x)

int min(int x,int y)

return m;

}

int main()

dfs(0,s,t,l);

for(i=s;i<=t;i++)

if(p[i])   //有石子

f[i]=1;

for(i=t+1;i<=l+t;i++)

int minn=0x7fffffff;

for(i=l;i<=l+t;i++)

printf("%d\n",minn);

}

大佬 求幫助

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 package wenjian import deom04.filelinereader public class deom04 mfilelinereader.close markdown 是一種輕量級標記...

程式設計小菜鳥求幫助

試著改編乙個fftw的傅利葉程式,但是老是出問題,希望有懂的的大神幫忙看哈 指出怎麼改!include fftw3.h include include include include include const int n 4240 const double pi 3.1416 const doub...

關於串列埠通訊校驗演算法,求幫助!!

串列埠資料如下 41 00 c4 00 02 40 12 f9 fe 42 00 c4 00 02 40 12 97 56 43 00 c4 00 02 40 12 42 c9 44 00 c4 00 02 40 12 5a 0e 45 00 c4 00 02 40 12 8f 91 46 00 c...