P3384: [Usaco2004 Nov]Apple Catching 接苹果

一道DP题, f[i,j,k] 表示 第 k 时刻 由 1 位置 变换 j 次 到达 当前 i 棵树 注意也要维护 变换 0 次的情况。
 1 var i,j,k,t,w,now:longint;
 2 tree:array[1..2,0..1001] of longint;
 3 f:array[1..2,0..50,0..1001] of longint;
 4 function max(a,b:longint):longint;
 5 begin
 6   if a>b then exit(a)
 7     else exit(b);
 8 end;
 9 begin
10   readln(t,w);
11   for i:=1 to t do
12     begin
13       readln(now);
14       tree[now,i]:=1;
15     end;
16     for i:=1 to t do
17     for j:=0 to w+i-max(i,w) do
18       for k:=1 to 2 do
19         begin
20           if (j=0) and (k<>2) then begin
21             f[k,j,i]:=f[k,j,i-1]+tree[k,i];
22             continue;
23           end
24           else if j=0 then continue;
25           f[k,j,i]:=max(f[k,j,i],tree[k,i]+max(f[3-k,j-1,i-1],f[k,j,i-1]));
26           //writeln(i,' ',j,' ',f[k,j,i]);
27         end;
28   writeln(max(f[1,w,t],f[2,w,t]));
29 end.
View Code
   (转载请注明出处:http://www.cnblogs.com/Kalenda/)

转载于:https://www.cnblogs.com/Kalenda/p/4831955.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值