极类似动归的广搜?反正各种算法傻傻分不清…写之前叹了一句,好久不写广搜了啊!呵呵真的写了好久,大约一个钟头?

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] 崎岖的山区的更多相关文章

  1. OpenJudge 7624 山区建小学

    在openjudge似乎无法凭题号搜到题...? 总时间限制:  1000ms  内存限制:  65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任 ...

  2. 记录sqoop同步失败问题解决过程,过程真的是很崎岖。(1月6日解决)

    记录sqoop同步失败问题解决过程,过程真的是很崎岖.事发原因:最近突然出现sqoop export to mysql时频繁出错.看了下日志是卡在某条数据过不去了,看异常.看sqoop生成的mr并未发 ...

  3. NOI题库7624 山区建小学(162:Post Office / IOI2000 POST OFFICE [input] )

    7624:山区建小学 Description 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为 ...

  4. 第七届河南省赛10403: D.山区修路(dp)

    10403: D.山区修路 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 69  Solved: 23 [Submit][Status][Web Bo ...

  5. #DP# ----- OpenJudge山区建小学

    没有记性.到DP不得不写博了,三天后又忘的干干净净.DP是啥 :-) 一道久到不能再久的题了. OpenJudge  7624:山区建小学 总时间限制: 1000ms     内存限制: 65536k ...

  6. Openjudge — 7624 山区建小学

    问题描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i & ...

  7. 7624:山区建小学(划分dp)

    7624:山区建小学 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄 ...

  8. 山区建小学(区间DP)

    山区建小学 时间限制: 1 Sec  内存限制: 128 MB提交: 17  解决: 5[提交][状态][讨论版][命题人:quanxing] 题目描述 政府在某山区修建了一条道路,恰好穿越总共m个村 ...

  9. 【OpenJudge7624】【区间DP】山区建小学

    山区建小学 总时间限制: 1000ms 内存限制: 65536kB [描述] 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两 ...

随机推荐

  1. ios 开发之 Xcode6 No valid signing identities (i.e. certificate and private key pair) matching...

    之前的项目用证书真机测试过,我想再无证书Build,出现下面的报错提示! 下面的team我无法改成None!一点击None选的还是Unhonw name(JPGE28K3W9)这个是报错的关键 最后由 ...

  2. 循环效率对比 js node c# mssql

  3. drupal里面的ajax最粗浅的理解-流程

    1,  form里面的ajax所在地表单元素有一个事件,激发system/ajax,相应的有ajax_form_callback(), 会把被改变的元素值传到form_state[values]中, ...

  4. SSH命令行上传/下载文件

    上传:scp /path/file(这部分为本地的路径) user(远端目标用户名)@host(远端目标IP):/pathorfile(文件存储路径) 下载:scp user(远端用户名)@host( ...

  5. js倒计时天时分秒[转]

    <script language="JavaScript"> <!-- // function getQueryString(name) { var reg =n ...

  6. View绑定式监听器实现原理

    在我们开发android的时候,会经常重写自定义的View去满足一些需求 然后有时候view会提供一些回调,比如view某个部分被点击了,我们需要通知使用者然后再通过接口传一些参数过去. 对于我之前的 ...

  7. 【BZOJ 2818】Gcd - 筛法求素数&phi()

    题目描述 给定整数,求且为素数的数对有多少对. 分析 首先筛出所有的素数. 我们考虑枚举素数p,统计满足的个数,等价于统计的个数,即统计以内满足互质的有序数对个数. 不难发现,也就是说,我们只要预处理 ...

  8. 日期操作类--Date类

    Date-API ava.util包提供了Date类来封装当前的日期和时间.Date类提供两个构造函数来实例化Date对象.第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函 ...

  9. Android LayoutParams

    LayoutParams继承于Android.View.ViewGroup.LayoutParams,就是布局. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置.高 ...

  10. sublime text修改TAB缩进为2个空格

    打开sublime后在倒数第二项 preference---->Settings-user: 然后输入 "tab_size": 2, "translate_tabs ...