【演算法】狀態壓縮型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#includeview code#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;
}
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的點表示橋的起點,座標...