貌似开坑还挺好玩的...开一个来玩玩=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.