NOIP 提高組2005 過河

2022-04-30 05:00:11 字數 1021 閱讀 2183

【演算法】狀態壓縮型dp

【題解】

q=tx+(t-1)y

對於q≥t(t-1),x,y一定有解。

所以當兩石子間距離long>t(t-1)時,令long=t(t-1),重新構造陣列即可。

【注意】

1.輸入的石子位置無序,要排序。

2.當s=t時特判。

3.最終解要在n~n+t中找最小值(不過資料太水=v=)。

#include#include

#include

using

namespace

std;

const

int maxn=30000,maxm=110

;int

a[maxm],b[maxn],f[maxn],l,s,t,n;

intmain()

sort(a,a+n+1

);

int ago=0,mark=0,p=t*(t-1)+1

;

for(int i=1;i<=n;i++)

if(l-ago>p)

mark+=p;

else mark=mark+l-ago;

memset(f,

0x3f,sizeof

(f));

f[0]=0

;

for(int i=s;i<=mark;i++)

for(int j=s;j<=t;j++)

/*for(int i=0;i<=mark;i++)printf("%d ",i);printf("\n");

for(int i=0;i<=mark;i++)printf("%d ",b[i]);printf("\n");

for(int i=0;i<=mark;i++)if(f[i]>1000)printf("x ");else printf("%d ",f[i]);

*/printf("%d

",f[mark]);

return0;

}

view code

NOIP提高組2005 過河

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

壓縮dp之noip提高組2005 過河

這題拿到手,很容易想到這樣的乙個dp方程 f i minof 其中f i 表示調到i位置最少需要的石子,a i 表示i位置是否有石子,1表示有,0表示沒有。但是這題的l範圍達到10 9,如果直接採用上面的dp方程只能拿到30分。如何改進呢?我們很快注意到石子個數m最大不差過100,那麼顯然m個石子分...

過河 2023年NOIP全國聯賽提高組

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