[mr440] 崎岖的山区
极类似动归的广搜?反正各种算法傻傻分不清…写之前叹了一句,好久不写广搜了啊!呵呵真的写了好久,大约一个钟头?
f[i,j,0]表示到点(i,j)且最后一步为下降的最少步数,f[i,j,1]就是上升。莫名让我想到了NOIP2013的摆花,那时我也脑坏地写了个O(N^2)也是这样[1..n,1..n,0..1]的数组…
犯的错误就是由于判断更高之后要入队列,判断更低之后也要入队列,否则有可能前面的true被后面的false给搞掉…这就是为什么我过了三个数据,剩下的数据都只错了一两行的原因。(数据真弱=。=)
90行+广搜,有种hold不住的感觉。今天上课听了树链剖分我表示…那种题遇到了干脆就送掉吧…=y=能搞懂LCA就是万幸了。
program mr440;
const dx:array[..] of integer=(,,-,);
dy:array[..] of integer=(,-,,);
var map:array[..,..] of integer;
mark:array[..,..] of boolean;
m,n,i,j,l,r,tx,ty:longint;
f:array[..,..,..] of longint;
lx,ly:array[..] of integer;
flag:boolean; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; function min3(a,b,c:longint):longint;
begin
if (a<b) and (a<c) then exit(a);
if (b<c) and (b<a) then exit(b);
exit(c);
end; begin
assign(input,'mr440.in2');reset(input);
assign(output,'mr440.ou2');rewrite(output);
readln(m,n);
for i:= to m do
begin
for j:= to n do
read(map[i,j]);
readln;
end;
fillchar(mark,sizeof(mark),);
fillchar(f,sizeof(f),$7f);
l:=;r:=;lx[l]:=;ly[l]:=;mark[,]:=true;f[,,]:=;f[,,]:=;
while (l<=r) do
begin
for i:= to do
begin
tx:=lx[l]+dx[i];
ty:=ly[l]+dy[i];
if (tx<) or (tx>m+) or (ty<) or (ty>n+) then continue;
if map[tx,ty]>=map[lx[l],ly[l]] then {1 shangsheng}
begin
flag:=false;
if f[lx[l],ly[l],]<f[tx,ty,] then
begin
f[tx,ty,]:=f[lx[l],ly[l],];
flag:=true;
end;
if f[lx[l],ly[l],]+<f[tx,ty,] then
begin
f[tx,ty,]:=f[lx[l],ly[l],]+;
flag:=true;
end;
if (mark[tx,ty]=false) and (flag=true) then
begin
inc(r);
lx[r]:=tx;ly[r]:=ty;
mark[tx,ty]:=true;
end;
end;
if map[tx,ty]<=map[lx[l],ly[l]] then
begin
flag:=false;
if f[lx[l],ly[l],]<f[tx,ty,] then
begin
f[tx,ty,]:=f[lx[l],ly[l],];
flag:=true;
end;
if f[lx[l],ly[l],]+<f[tx,ty,] then
begin
f[tx,ty,]:=f[lx[l],ly[l],]+;
flag:=true;
end;
if (mark[tx,ty]=false) and (flag=true) then
begin
inc(r);
lx[r]:=tx;ly[r]:=ty;
mark[tx,ty]:=true;
end;
end;
end;
mark[lx[l],ly[l]]:=false;
inc(l);
end;
for i:= to m do
begin
write(min(f[i,,]+f[i,,],min(f[i,,],f[i,,])*+),' ');
for j:= to n do
write(min(f[i,j,]+f[i,j,],min(f[i,j,],f[i,j,])*+),' ');
writeln;
end;
close(input);close(output);
end.
崎岖的山区
[mr440] 崎岖的山区的更多相关文章
- OpenJudge 7624 山区建小学
在openjudge似乎无法凭题号搜到题...? 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任 ...
- 记录sqoop同步失败问题解决过程,过程真的是很崎岖。(1月6日解决)
记录sqoop同步失败问题解决过程,过程真的是很崎岖.事发原因:最近突然出现sqoop export to mysql时频繁出错.看了下日志是卡在某条数据过不去了,看异常.看sqoop生成的mr并未发 ...
- NOI题库7624 山区建小学(162:Post Office / IOI2000 POST OFFICE [input] )
7624:山区建小学 Description 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为 ...
- 第七届河南省赛10403: D.山区修路(dp)
10403: D.山区修路 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 69 Solved: 23 [Submit][Status][Web Bo ...
- #DP# ----- OpenJudge山区建小学
没有记性.到DP不得不写博了,三天后又忘的干干净净.DP是啥 :-) 一道久到不能再久的题了. OpenJudge 7624:山区建小学 总时间限制: 1000ms 内存限制: 65536k ...
- Openjudge — 7624 山区建小学
问题描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i & ...
- 7624:山区建小学(划分dp)
7624:山区建小学 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄 ...
- 山区建小学(区间DP)
山区建小学 时间限制: 1 Sec 内存限制: 128 MB提交: 17 解决: 5[提交][状态][讨论版][命题人:quanxing] 题目描述 政府在某山区修建了一条道路,恰好穿越总共m个村 ...
- 【OpenJudge7624】【区间DP】山区建小学
山区建小学 总时间限制: 1000ms 内存限制: 65536kB [描述] 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两 ...
随机推荐
- Three.js 3D特效学习
一.Three.js基本介绍 Three.js是JavaScript编写的WebGL第三方库.提供了非常多的3D显示功能.Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场 ...
- 修改jsp文件tomcat发布失败(Could not delete May be locked by another process)
突然项目修改jsp文件后,tomcat不能发布, Publishing failed with multiple errors Could not delete D:/Tomcat 6.0/web ...
- 注意字段类型是varchar2的时候是需要加长度的
注意字段类型是varchar2的时候是需要加长度的,如下: alter table a add username varchar2(32); 注意以下是错误的: alter table a add u ...
- sql CHARINDEX函数
CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置.CHARINDEX函数调用方法如下: CHARINDEX ( expression1 , expression2 [ , start ...
- iOS高性能图片架构与设计
版权声明:本文由柯灵杰原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/157 来源:腾云阁 https://www.qclo ...
- 花生壳+Tomcat
花生壳(内网穿透)新手上路 http://service.oray.com/question/1664.html 好不容易找到一篇关于“花生壳+Tomcat”的好文章,转一下,上次自己弄的时候把自己的 ...
- TWaver HTML5 (2D)----数据元素
概述 数据元素是数据模型的基本要素,用于描述图形网元,业务网元,或者纯数据.TWaver HTML5中所有数据元素都继承自twaver.Data.为不同功能的需求,预定义了三类数据类型:twaver. ...
- screenX clientX pageX的区别
screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟screenX相比就是将参照点改成了浏览器内容区域的左上角 ...
- nodeschool.io 10
~~ TIME SERVER ~~ Write a TCP time server! Your server should listen to TCP connections on port 8000 ...
- NCrawler 学习
NCrawler是一款国外的开源网络爬虫软件,遵循LGPL许可协议.其HTML处理使用的是htmlagilitypack开源库,采用xpath的方式处理定位网页元素,十分方便.同时其采用HttpWeb ...