洛谷 P3956 棋盘(记忆化搜索)
嗯...
题目链接:https://www.luogu.org/problem/P3956
这是一道比较好搜的题,注意一些剪枝、预处理和魔法的处理问题(回溯)。
AC代码:
#include<cstdio>
#include<cstring>
#include<iostream> using namespace std; int n, m, ans = 0x7ffffff;
int dir[][] = {{, }, {-, }, {, -}, {, }};
int mp[][], dp[][]; inline void dfs(int x, int y, int sum, bool magic){
if(x < || y < || x > m || y > m) return;
if(sum >= dp[x][y]) return;//记忆化剪枝
dp[x][y] = sum;
if(x == m && y == m) {ans = min(ans, sum); return;}
for(int i = ; i < ; i++){
int nx = x + dir[i][];
int ny = y + dir[i][];
if(nx < || ny < || nx > m || ny > m) continue;
if(mp[nx][ny]){
if(mp[x][y] == mp[nx][ny]) dfs(nx, ny, sum, );
else dfs(nx, ny, sum+, );
}
else{
if(!magic){
mp[nx][ny] = mp[x][y];
dfs(nx, ny, sum+, );
mp[nx][ny] = ;
}//处理魔法,注意回溯
}
}
} int main(){
memset(dp, 0x3f3f3f, sizeof(dp));
scanf("%d%d", &m, &n);
for(int i = ; i <= n; i++){
int x, y, c;
scanf("%d%d%d", &x, &y, &c);
mp[x][y] = c + ;
//无色-0
}
dfs(, , , );
printf("%d", ans == 0x7ffffff ? - : ans);
return ;
}
AC代码
洛谷 P3956 棋盘(记忆化搜索)的更多相关文章
- 2017普及组D1T3 洛谷P3956 棋盘
2017普及组D1T3 洛谷P3956 棋盘 原题 题目描述 有一个m×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在 ...
- 洛谷 P3956 棋盘 解题报告
P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...
- 洛谷p3956 棋盘(NOIP2017 t3)
在noip考场上本来以为只能骗暴力分,没想到最后A了: 本蒟蒻的做法比较简(zhi)单(zhang):记忆化深搜(考场上本来是想打广搜的,但我深搜稳一点就这样打了): 具体:每个点用一个f数组记录当前 ...
- 洛谷 P3956 棋盘
题目描述 有一个m ×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上 ...
- 洛谷 P3956 棋盘(BFS)
传送门:Problem P3956 https://www.cnblogs.com/violet-acmer/p/9827010.html 题解: BFS 相关变量解释: color[maxn][ma ...
- 洛谷 P3956 棋盘 题解
每日一题 day5 打卡 Analysis 深搜+剪枝+瞎jb判断 1.越界 2.这个点无色 3.当前的价值已经比答案大 三种情况要剪枝 我搜索里判断要不要施法的时候没判断上一次有没有施法,白调了0. ...
- 【题解】洛谷P3953 [NOIP2017TG] 逛公园(记忆化搜索+SPFA)
题目来源:洛谷P3953 思路 先用SPFA求一遍最短路 在求最短路的同时可以把所有点到终点的最短路求出来 dis数组 注意要反向SPFA 因为从起点开始可能会走到一些奇怪的路上导致时间负责度增加 ...
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...
- 洛谷P1434滑雪题解及记忆化搜索的基本步骤
题目 滑雪是一道dp及记忆化搜索的经典题目. 所谓记忆化搜索便是在搜索的过程中边记录边搜索的一个算法. 当下次搜到这里时,便直接使用. 而且记忆化搜索一定要满足无后效性,为什么呢,因为如果不满足无后效 ...
随机推荐
- WampServer 的安装\配置和使用
WampServer下载地址:http://www.wampserver.com/ WampServer安装(请按序号点击) 双击WampServer安装程序 步骤①更改路径 直接点击安装 等待安装不 ...
- 使用Powershell开机启动隐藏窗口的程序
1.打开注册表找到键值:计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 2.添加字符串值:StartJetSer ...
- xpath解析html标签
最近忙一个需求:把一个字符串形式的html文档转化成excel. 分解需求: ① 实现语言 ———— python ② html解析 ———— 用 lxml库的etree工具,xpath方式解析文档树 ...
- Port 3000 is already in use
cmd输入:netstat -ano | findstr :3000//查看是谁占用了3000号端口 显示如下 TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 18412 T ...
- 2019牛客多校第一场E ABBA dp
ABBA dp 题意 给出2(N+M)个AB字符,问能构造出N个AB子序列和M个BA子序列组成的2*(n+m)的序列种类有多少 思路 碰到计数构造类的题目,首先要去找到判断合法性的条件,即什么情况下合 ...
- AC3 channel coupling
1.overview 如果使用channel coupling, encoder端计算所有channel的transform coefficients的平均值,将平均值压缩到coupling chan ...
- 网关集成Swagger出现404错误
原因是忘了在需要生成api的类上加入注解 @EnableSwagger2Doc
- zlt项目实践
nacos gateWay fronted oath2 codeGenerate log-app monitor-app search-app
- centos长ping输出日志的脚本
为监控某服务器的网络情况,制作一个sh脚本,记录ping的长过程,并输出日志以备观察. 1.脚本如下 cat /home/summer/ping100.sh #!/bin/sh ping 172.16 ...
- SQL通过Datatable更新数据库表内容
SQL通过Datatable更新数据库表内容 //要注意的一点是在Select语句中要选择的列中必须包含主键的列,此外不支持多表连接查询 DataTable dt = new DataTable( ...