貌似开坑还挺好玩的...开一个来玩玩=v=...

正好自己dp不是很熟悉,就开个坑来练练吧...先练个50题?小目标... 好像有点多啊QAQ

既然是开坑,之前写的都不要了!

1.洛谷P3399 丝绸之路 简单的线性dp

点我看题

因为是开坑所以题意就不讲了,自己看题吧,一些题意比较迷的会讲一下。

这题其实还挺简单的。

f[i,j] 表示到第 i 个城市用了 j 天所需要的最小疲劳值。

很快dp方程就出来了。  f[i,j]=min(f[i,j-1],f[i-1,j-1]+d[i]*c[j])   第一个是选择休息第二个是选择走。

初始化 f[i,i]=f[i-1,i-1]+a[i]*b[i]  一天都不休息就是天天走的值

 1 var n,m:longint;
 2     i,j:longint;
 3     a,b:array[0..1000]of longint;
 4     f:array[0..1000,0..1000]of longint;
 5 function min(a,b:longint):longint;
 6 begin
 7   if a<b then exit(a) else exit(b);
 8 end;
 9 begin
10   read(n,m);
11   for i:=1 to n do
12   read(a[i]);
13   for i:=1 to m do
14   read(b[i]);
15   for i:=1 to n do
16   begin
17     f[i,i]:=f[i-1,i-1]+a[i]*b[i];
18     for j:=i+1 to m do
19     f[i,j]:=min(f[i,j-1],f[i-1,j-1]+a[i]*b[j]);
20   end;
21   writeln(f[n,m]);
22 end.
丝绸之路

相关文章: