zoukankan      html  css  js  c++  java
  • poj1088

    这题是dp还是dfs+记忆化?(其实好像没什么区别?)

    用f[i,j]表示滑到(i,j)时之后最多能滑多远,依次穷举每一个起点(i,j)则

    f[i,j]=max{f[i,j-1],f[i-1,j],f[i+1,j],f[i,j+1]}+1 (当然滑到那个点的高度要小于(i,j)的高度)

     1 const dx:array[1..4] of integer=(0,0,-1,1);
     2       dy:array[1..4] of integer=(-1,1,0,0);
     3 var f,a:array[0..600,0..600] of longint;
     4     n,i,j,m,ans:longint;
     5 function max(a,b:longint):longint;
     6   begin
     7     if a>b then max:=a else max:=b;
     8   end;
     9 procedure search(x,y:longint);
    10   var i,xx,yy:integer;
    11       maxx:longint;
    12   begin
    13     maxx:=0;
    14     for i:=1 to 4 do
    15     begin
    16       xx:=x+dx[i];
    17       yy:=y+dy[i];
    18       if (a[xx,yy]<a[x,y]) and (f[xx,yy]=0) then search(xx,yy);
    19       if (a[xx,yy]<a[x,y]) then maxx:=max(maxx,f[xx,yy]);
    20     end;
    21     f[x,y]:=maxx+1;
    22   end;
    23 
    24 begin
    25   readln(n,m);
    26   for i:=0 to n+1 do
    27     for j:=0 to m+1 do
    28       a[i,j]:=21474836;
    29   for i:=1 to n do
    30   begin
    31     for j:=1 to m do
    32       read(a[i,j]);
    33     readln;
    34   end;
    35   for i:=1 to n  do
    36     for j:=1 to m do
    37       if f[i,j]=0 then search(i,j);
    38   for i:=1 to n do
    39     for j:=1 to m do
    40       ans:=max(ans,f[i,j]);
    41   writeln(ans);
    42 end.
    View Code
  • 相关阅读:
    【NOI D2T1】量子通信(容斥原理+卡常)
    CF1555D Say No to Palindromes(线段树)
    CF1554B Cobb
    CF1554A Cherry
    【做题笔记】UVA10162 Last Digit
    【做题记录】CF1223D Sequence Sorting
    CF39H
    UVA10763
    题解 AT2361 [AGC012A] AtCoder Group Contest
    このブログについて | About this blog
  • 原文地址:https://www.cnblogs.com/phile/p/4473316.html
Copyright © 2011-2022 走看看