洛谷p3956 棋盘(NOIP2017 t3)
在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)的更多相关文章
- 2017普及组D1T3 洛谷P3956 棋盘
2017普及组D1T3 洛谷P3956 棋盘 原题 题目描述 有一个m×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在 ...
- 洛谷 P3956 棋盘 解题报告
P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...
- 洛谷 P3956 棋盘(BFS)
传送门:Problem P3956 https://www.cnblogs.com/violet-acmer/p/9827010.html 题解: BFS 相关变量解释: color[maxn][ma ...
- 洛谷 P3956 棋盘
题目描述 有一个m ×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上 ...
- 洛谷 P3956 棋盘(记忆化搜索)
嗯... 题目链接:https://www.luogu.org/problem/P3956 这是一道比较好搜的题,注意一些剪枝.预处理和魔法的处理问题(回溯). AC代码: #include<c ...
- 洛谷 P3956 棋盘 题解
每日一题 day5 打卡 Analysis 深搜+剪枝+瞎jb判断 1.越界 2.这个点无色 3.当前的价值已经比答案大 三种情况要剪枝 我搜索里判断要不要施法的时候没判断上一次有没有施法,白调了0. ...
- 洛谷P3957 跳房子(Noip2017普及组 T4)
今天我们的考试就考到了这道题,在考场上就压根没有思路,我知道它是一道dp的题,但因为太弱还是写不出来. 下来评讲的时候知道了一些思路,是dp加上二分查找的方式,还能够用单调队列优化. 但看了网上的许多 ...
- 洛谷P1436 棋盘分割
洛谷题目链接 动态规划: 我们设状态$f[i][j][o][p][k]$表示一个矩形,左上角顶点坐标为$(i,j)$,右下角顶点坐标为$(o,p)$时分割了$k$次,也就是说现在是$k+1$块 我们考 ...
- 【洛谷p3956】棋盘
日常blog(✧◡✧) 棋盘[题目链接] 算法: 然后这是2017普及组: first.关于颜色处理:让c[i][j]=color+1:这样无色=0,红色=1,黄色=2: 然后其实是记忆化,将记答案的 ...
随机推荐
- Oracle 查看一个数据库实例下面所有的表大小
1. 因为 oracle有一些 lob字段 在user_extents 里面取出来的结果不是表名, 所以需要与user_lobs 表做关联查询才可以 本来想通过 关联查询来实现, 发现字表查询更简单 ...
- ES6生成器与迭代器
ES6迭代器的一个例子 function run(taskDef) { var task = taskDef(); var result = task.next(); // 递归执行迭代 functi ...
- int快读
昨天偶然间看到CJ_tony的快读,所以便决定学习一下. 这个快读的原理就是:读入单个字符要比读入读入数字快,先读入字符,然后再转化成数字.(原理的话大学再研究) 代码: #include<io ...
- Tarjan水题系列(1):草鉴定Grass Cownoisseur [USACO15JAN]or[luogu P3119]
题目如下: 约翰有n块草场,编号1到n,这些草场由若干条单行道相连.奶牛贝西是美味牧草的鉴赏家,她想到达尽可能多的草场去品尝牧草. 贝西总是从1号草场出发,最后回到1号草场.她想经过尽可能多的草场,贝 ...
- nginx重新编译安装upload模块
由于php处理上传会出现超时,并且显示上传进度官方php不支持nginx+php,所以决定让nginx自己处理上传,我本地环境是mac上已经安装过nginx1.8.0,安装方式为brew,所以需要重新 ...
- 08: mysql主从原理
1.1 mysql主从同步 参考博客:https://www.cnblogs.com/kevingrace/p/6256603.html 1.mysql主从同步(复制)概念 1. 将Mysql某一 ...
- HDU - 1845 Jimmy’s Assignment (二分匹配)
Description Jimmy is studying Advanced Graph Algorithms at his university. His most recent assignmen ...
- application详解
Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的.本文主要详细介绍Application对象的用法. 一.全局应用程序类 ...
- python Rabbitmq编程(一)
python Rabbitmq编程(一) 实现最简单的队列通信 send端 #!/usr/bin/env python import pika credentials = pika.PlainCred ...
- Zabbix--02 自定义监控主机
目录 一. Zabbix 监控基础架构 二. zabbix 快速监控主机 1.安装zabbix-agent 2.配置zabbix-agent 3.启动zabbix-agent并检查 4.zabbix- ...