在noip考场上本来以为只能骗暴力分,没想到最后A了;

本蒟蒻的做法比较简(zhi)单(zhang):记忆化深搜(考场上本来是想打广搜的,但我深搜稳一点就这样打了);

具体:每个点用一个f数组记录当前位置到这个点的最优值,如果大于等于就跳出,否则更新继续做;

深搜的过程中开个桶记录每个点是否无色,如果无色要注意下个走的点不能有色,如果下个点要走无色的格子,这里可以采取一个贪心的策略:把那个格子的颜色设置成当前这个格子的颜色;

要注意的是:走的过程中是可以向四个方向走的,并且要回溯(我一个dalao同学就忘了回溯才拿了40);

附蒟蒻丑陋的代码。。。

 var n,m,i,j,k,l,x,y,z:longint;
a:array[..,..] of longint;
b:array[..,..] of boolean;
f:array[..,..] of longint;
procedure try(x,y,z,kk:longint);
begin
if (x>m)or(y>m)or(x<)or(y<) then exit;
if b[x,y] then exit;
if z>=f[x,y] then exit;
if (x=m)and(y=m) then
begin
if z<k then k:=z;
exit;
end;
f[x,y]:=z;
inc(l);
b[x,y]:=true;
if a[x,y]= then
begin
if a[x+,y]= then try(x+,y,z,) else
if a[x+,y]= then try(x+,y,z+,) else
if kk= then
begin
a[x+,y]:=;
try(x+,y,z+,);
a[x+,y]:=;
end;
if a[x,y+]= then try(x,y+,z,) else
if a[x,y+]= then try(x,y+,z+,) else
if kk= then
begin
a[x,y+]:=;
try(x,y+,z+,);
a[x,y+]:=;
end;
if a[x-,y]= then try(x-,y,z,) else
if a[x-,y]= then try(x-,y,z+,) else
if kk= then
begin
a[x-,y]:=;
try(x-,y,z+,);
a[x-,y]:=;
end;
if a[x,y-]= then try(x,y-,z,) else
if a[x,y-]= then try(x,y-,z+,) else
if kk= then
begin
a[x,y-]:=;
try(x,y-,z+,);
a[x,y-]:=;
end;
end else
if a[x,y]= then
begin
if a[x+,y]= then try(x+,y,z+,) else
if a[x+,y]= then try(x+,y,z,) else
if kk= then
begin
a[x+,y]:=;
try(x+,y,z+,);
a[x+,y]:=;
end;
if a[x,y+]= then try(x,y+,z+,) else
if a[x,y+]= then try(x,y+,z,) else
if kk= then
begin
a[x,y+]:=;
try(x,y+,z+,);
a[x,y+]:=;
end;
if a[x-,y]= then try(x-,y,z+,) else
if a[x-,y]= then try(x-,y,z,) else
if kk= then
begin
a[x-,y]:=;
try(x-,y,z+,);
a[x-,y]:=;
end;
if a[x,y-]= then try(x,y-,z+,) else
if a[x,y-]= then try(x,y-,z,) else
if kk= then
begin
a[x,y-]:=;
try(x,y-,z+,);
a[x,y-]:=;
end;
end;
b[x,y]:=false;
end;
begin
assign(input,'chess.in');
assign(output,'chess.out');
reset(input);
rewrite(output);
k:=maxlongint div ;
read(m,n);
for i:= to m do
for j:= to m do f[i,j]:=maxlongint;
for i:= to n do
begin
read(x,y,z);
a[x,y]:=z+;
end;
try(,,,);
if k=maxlongint div then write(-) else
write(k);
close(input);
close(output);
end.

洛谷p3956 棋盘(NOIP2017 t3)的更多相关文章

  1. 2017普及组D1T3 洛谷P3956 棋盘

    2017普及组D1T3 洛谷P3956 棋盘 原题 题目描述 有一个m×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在 ...

  2. 洛谷 P3956 棋盘 解题报告

    P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...

  3. 洛谷 P3956 棋盘(BFS)

    传送门:Problem P3956 https://www.cnblogs.com/violet-acmer/p/9827010.html 题解: BFS 相关变量解释: color[maxn][ma ...

  4. 洛谷 P3956 棋盘

    题目描述 有一个m ×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上 ...

  5. 洛谷 P3956 棋盘(记忆化搜索)

    嗯... 题目链接:https://www.luogu.org/problem/P3956 这是一道比较好搜的题,注意一些剪枝.预处理和魔法的处理问题(回溯). AC代码: #include<c ...

  6. 洛谷 P3956 棋盘 题解

    每日一题 day5 打卡 Analysis 深搜+剪枝+瞎jb判断 1.越界 2.这个点无色 3.当前的价值已经比答案大 三种情况要剪枝 我搜索里判断要不要施法的时候没判断上一次有没有施法,白调了0. ...

  7. 洛谷P3957 跳房子(Noip2017普及组 T4)

    今天我们的考试就考到了这道题,在考场上就压根没有思路,我知道它是一道dp的题,但因为太弱还是写不出来. 下来评讲的时候知道了一些思路,是dp加上二分查找的方式,还能够用单调队列优化. 但看了网上的许多 ...

  8. 洛谷P1436 棋盘分割

    洛谷题目链接 动态规划: 我们设状态$f[i][j][o][p][k]$表示一个矩形,左上角顶点坐标为$(i,j)$,右下角顶点坐标为$(o,p)$时分割了$k$次,也就是说现在是$k+1$块 我们考 ...

  9. 【洛谷p3956】棋盘

    日常blog(✧◡✧) 棋盘[题目链接] 算法: 然后这是2017普及组: first.关于颜色处理:让c[i][j]=color+1:这样无色=0,红色=1,黄色=2: 然后其实是记忆化,将记答案的 ...

随机推荐

  1. 【Qt开发】将内存图像数据封装成QImage V2

    如何将内存图像数据封装成QImage 当采用Qt开发相机数据采集软件时,势必会遇到采集内存图像并进行处理(如缩放.旋转)操作.如果能够将内存图像数据封装成QImage,则可以利用QImage强大的图像 ...

  2. Kibana开启中文语言

    Kibana在6.7以后的版本,支持了多种语言.并且自带在安装包里. 开启方式: 找到Kibana配置文件所在:config/kibana.yml找到配置:i18n.locale: "en& ...

  3. python 并发编程 多进程 守护进程

    一 守护进程 主进程创建子进程目的是:主进程有一个任务需要并发执行,那开启子进程帮我并发执行任务 主进程创建子进程,然后将该进程设置成守护自己的进程 关于守护进程需要强调两点: 其一:守护进程会在主进 ...

  4. JS基础篇--JS获取元素的宽高以及offsetTop,offsetLeft等的属性值

    $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj).wid ...

  5. java http请求工具整理

    处理了http 的get和post的请求,分别支持同步处理,异步处理两种方式下见代码. @Slf4jpublic class HttpUtils { /** * 同步请求http请求 不推荐 * * ...

  6. numpy库的认识以及数组的创建

    numpy库 numpy是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础.numpy十分高效,基于NumPy的算法要比纯Python快10到100倍(甚至 ...

  7. 画一个心送给心爱的小姐姐,Python绘图库Turtle

    Python绘图库Turtle Turtle介绍 Turtle是Python内嵌的绘制线.圆以及其他形状(包括文本)的图形模块. 一个Turtle实际上是一个对象,在导入Turtle模块时,就创建了对 ...

  8. HNUSTOJ-1698 送外卖(TSP问题 + 状态压缩DP)

    1698: 送外卖 时间限制: 1 Sec  内存限制: 128 MB提交: 123  解决: 28[提交][状态][讨论版] 题目描述 在美团和饿了么大行其道的今天,囊中羞涩的小周和小美,也随大流加 ...

  9. DRF框架之视图类

    前后端分离的项目 >: pip3 install djangorestframework   一.视图类传递参数给序列化类 视图层:views.py 需求: (1)在视图类中实列化对象是,可以设 ...

  10. 图解Qt安装(Linux平台)

    http://c.biancheng.net/view/3886.html Linux 发行版虽然众多,但 Qt 安装过程大同小异,本节以 CentOS 7 为例来演示 Qt 的安装. 在<Qt ...