poj-1088滑雪
来源:互联网 发布:js 传数组到c 编辑:程序博客网 时间:2024/05/22 07:41
自来水~,按高度确定下搜索序,然后递推,记下当前最优值,O(RClog2(RC));
代码:
program poj_1088;const dx:array[1..4] of longint=(-1,0,0,1); dy:array[1..4] of longint=(0,-1,1,0);var map,f:array[0..101,0..101] of longint; x,y,h:array[1..10000] of longint; R,C,Ans:longint;procedure swap(var a,b:longint);var temp:longint;begin temp:=a; a:=b; b:=temp;end;procedure qsort(l,r:longint);var i,j,mid:longint;begin i:=l; j:=r; mid:=h[(l+r) div 2]; repeat while h[i]<mid do inc(i); while h[j]>mid do dec(j); if i<=j then begin swap(x[i],x[j]); swap(y[i],y[j]); swap(h[i],h[j]); inc(i); dec(j); end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r);end;function max(a,b:longint):longint;begin if a>b then exit(a) else exit(b);end; procedure main;var i,j,k,count:longint;begin readln(R,C); count:=0; for i:=1 to R do begin for j:=1 to C do begin read(map[i,j]); inc(count); x[count]:=i; y[count]:=j; h[count]:=map[i,j]; end; readln; end; qsort(1,count); fillchar(f,sizeof(f),0); Ans:=-maxlongint; for i:=1 to count do begin f[x[i],y[i]]:=1; for k:=1 to 4 do if (x[i]+dx[k]>=1)and(x[i]+dx[k]<=R)and(y[i]+dy[k]>=1)and(y[i]+dy[k]<=C) then if map[x[i]+dx[k],y[i]+dy[k]]<map[x[i],y[i]] then f[x[i],y[i]]:=max(f[x[i],y[i]],f[x[i]+dx[k],y[i]+dy[k]]+1); Ans:=max(Ans,f[x[i],y[i]]); end; write(Ans);end;begin main;end.
- POJ 1088 滑雪
- POJ 1088 滑雪
- POJ 1088 滑雪
- Poj 1088 滑雪
- poj 1088 滑雪
- 滑雪--POJ--1088
- poj 1088 滑雪(DP)
- POJ 1088 滑雪
- POJ 1088 滑雪
- poj 1088 滑雪
- POJ 1088 滑雪
- poj 1088 滑雪
- POJ 1088 滑雪
- poj 1088 滑雪
- poj 1088 滑雪
- POJ 1088 滑雪 DP
- POJ 1088 滑雪
- Poj 1088 滑雪
- Mysql源代码阅读笔记(四) 服务器监听
- Debian / Ubuntu linux install kernel headers package
- 在Linux单机上运行Hadoop-0.19.0实例http://blog.csdn.net/shirdrn/article/details/5781776
- HDOJ Big Event in HDU 多重背包
- jquery 无刷新上传文件,xmlhttprequest是无法上传文件的。
- poj-1088滑雪
- C语言解析pcap文件得到HTTP信息实例
- 秀一下软件的最新版本截图!我的心血啊
- GDAL1.9.0版本编译后,打不开含中文路径文件的解决办法
- Handler的使用(二)
- pcap编程深入解析
- ansi和unicode知识简介
- Struts 2读书笔记-----使用Struts 2的输入校验
- Spring事务配置的几种方式