分析

按照这个题目随便写一个搜索就可以了

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <ctype.h>
#include <iostream> using namespace std; const int dx[4]={-1,0,1,0};
const int dy[4]={0,-1,0,1};
const int inf=1<<30; int a[105][105],color[105][105],f[105][105];
int m,n,ans; inline int read() {
int x=0,w=0;char ch=0;
while (!isdigit(ch)) {w|=ch=='-';ch=getchar();}
while (isdigit(ch)) {x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return w?-x:x;
} void dfs(int x,int y,bool flag,int sum) {
if (sum>=f[x][y]) return ;
f[x][y]=sum;
if (x==m && y==m) {
ans=min(ans,sum);
return ;
}
for (int i=0;i<4;i++) {
int nx=x+dx[i],ny=y+dy[i];
if (nx<1||nx>m||ny<1||ny>m) continue;
if (color[nx][ny]==-1) {
if (flag) {
color[nx][ny]=color[x][y];
dfs(nx,ny,0,sum+2);
color[nx][ny]=-1;
}
}
else {
if (color[nx][ny]==color[x][y]) dfs(nx,ny,1,sum);
else dfs(nx,ny,1,sum+1);
}
}
} int main() {
m=read(),n=read();
for (int i=1;i<=m;i++) for (int j=1;j<=m;j++) color[i][j]=-1,f[i][j]=inf;
for (int i=1;i<=n;i++) {
int x=read(),y=read(),c=read();
color[x][y]=c;
}
ans=inf;
dfs(1,1,1,0);
if (ans==inf) printf("-1\n");
else printf("%d\n",ans);
return 0;
}

【搜索】棋盘 luogu-3956的更多相关文章

  1. [kuangbin带你飞]专题一 简单搜索 棋盘问题

    题来:链接https://vjudge.net/problem/OpenJ_Bailian-132 J - 棋盘问题 1.题目: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别. ...

  2. kuangbin专题 专题一 简单搜索 棋盘问题 POJ - 1321

    题目链接:https://vjudge.net/problem/POJ-1321 题意:给一张棋盘,‘#’表示可以下棋的地方,‘.’表示不能下棋的地方.棋盘是n*n的,要求能放下k个棋子,要求k个棋子 ...

  3. 【leetcode刷题笔记】N-Queens

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  4. Day2-I-Knight's Problem POJ - 3985

    You must have heard of the Knight's Tour problem. In that problem, a knight is placed on an empty ch ...

  5. 推荐三个好用的TamperMonkey洛谷插件

    Part 1: TamperMonkey 插件 Part 1.1 什么是 Tampermonkey 在我们学习的过程中,往往想要更多功能,这时候可以使用 TamperMonkey 插件进行美化 官网介 ...

  6. Luogu 1979 NOIP 2013 华容道(搜索,最短路径)

    Luogu 1979 NOIP 2013 华容道(搜索,最短路径) Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面 ...

  7. Luogu 1312 【NOIP2011】玛雅游戏 (搜索)

    Luogu 1312 [NOIP2011]玛雅游戏 (搜索) Description Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空 ...

  8. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  9. [luogu]P1379 八数码难题[广度优先搜索]

    八数码难题 ——!x^n+y^n=z^n 我在此只说明此题的一种用BFS的方法,因为本人也是初学,勉勉强强写了一个单向的BFS,据说最快的是IDA*(然而蒟蒻我不会…) 各位如果想用IDA*的可以看看 ...

  10. POJ 1321 棋盘问题(DFS板子题,简单搜索练习)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44012   Accepted: 21375 Descriptio ...

随机推荐

  1. JVM面试题(史上最强、持续更新、吐血推荐)

    文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...

  2. 【模拟8.09】建设城市(city) (容斥)

    放在了考试T1 发现70分的DP很水啊,f[i][j]为当前位置是i分配了j个队的方案 我们用前缀和统计,在将i删去,j倒序枚举,就可以删掉一维(也可以滚动数组滚起来) 1 #include<i ...

  3. Shiro-JWT SpringBoot前后端分离权限认证的一种思路

    JWT-Shiro 整合 JWT-与Shiro整合进行授权认证的大致思路 图示 大致思路 将登录验证从shiro中分离,自己结合JWT实现 用户登陆后请求认证服务器进行密码等身份信息确认,确认成功后 ...

  4. Windows内核开发-Windows内部概述-1-

    Windows内部概述-1- 进程: 进程是一个程序的运行实例的控制和管理对象.一般的程序员所说进程运行,这样的说法是不对的,因为进程不能运行程序,进程只能管理该程序运行.线程才是真正的执行代码的东西 ...

  5. js中有对象的key怎么获取对应的值

    一般人的思路是这样的 var obj = {"name1":"张三","name2":"李四"}; var key = ...

  6. 基于SpringBoot 、AOP与自定义注解转义字典值

    一直以来,前端展示字典一般以中文展示为主,若在表中存字典值中文,当字典表更改字典值对应的中文,会造成数据不一致,为此设置冗余字段并非最优方案,若由前端自己写死转义,不够灵活,若在业务代码转义,臃肿也不 ...

  7. leetcode动态规划题目总结

    Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 yea ...

  8. 【spring源码系列】之【Bean的属性赋值】

    每次进入源码的世界,就像完成一场奇妙的旅行! 1. 属性赋值概述 上一篇讲述了bean实例化中的创建实例过程,实例化后就需要对类中的属性进行依赖注入操作,本篇将重点分析属性赋值相关流程.其中属性赋值, ...

  9. gitlab 设置tag保护及取消tag保护功能

    用gitlab管理员登录系统 进入项目->设置->Repository 设置项目的Tag保护 效果展示 取消Tag保护 效果展示

  10. centos7安装chrome+chromeDriver+Xvfb

    安装chrome 创建yum源 # cd /etc/yum.repos.d/ # vim google-chrome.repo 创建yum源信息 [google-chrome] name=google ...