【搜索】棋盘 luogu-3956
分析
按照这个题目随便写一个搜索就可以了
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的更多相关文章
- [kuangbin带你飞]专题一 简单搜索 棋盘问题
题来:链接https://vjudge.net/problem/OpenJ_Bailian-132 J - 棋盘问题 1.题目: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别. ...
- kuangbin专题 专题一 简单搜索 棋盘问题 POJ - 1321
题目链接:https://vjudge.net/problem/POJ-1321 题意:给一张棋盘,‘#’表示可以下棋的地方,‘.’表示不能下棋的地方.棋盘是n*n的,要求能放下k个棋子,要求k个棋子 ...
- 【leetcode刷题笔记】N-Queens
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...
- 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 ...
- 推荐三个好用的TamperMonkey洛谷插件
Part 1: TamperMonkey 插件 Part 1.1 什么是 Tampermonkey 在我们学习的过程中,往往想要更多功能,这时候可以使用 TamperMonkey 插件进行美化 官网介 ...
- Luogu 1979 NOIP 2013 华容道(搜索,最短路径)
Luogu 1979 NOIP 2013 华容道(搜索,最短路径) Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面 ...
- Luogu 1312 【NOIP2011】玛雅游戏 (搜索)
Luogu 1312 [NOIP2011]玛雅游戏 (搜索) Description Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空 ...
- luogu P1549 棋盘问题(2) 题解
luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...
- [luogu]P1379 八数码难题[广度优先搜索]
八数码难题 ——!x^n+y^n=z^n 我在此只说明此题的一种用BFS的方法,因为本人也是初学,勉勉强强写了一个单向的BFS,据说最快的是IDA*(然而蒟蒻我不会…) 各位如果想用IDA*的可以看看 ...
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44012 Accepted: 21375 Descriptio ...
随机推荐
- mybatis中sql语句必须用${}而不能不用#{}的情况
在mybatis中如果我们使用#{}的方式编写的sql时,#{} 对应的变量自动加上单引号 ' ' 例如: select * from #{param} 当我们给参数传入值为user时,他的sql是这 ...
- 有趣的开源项目集结完毕,HelloGitHub 月刊第 63 期发布啦!
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这里有实战项目.入门教程.黑科技.开源书籍.大厂开源项目等,涵盖多种编程语言 Pyt ...
- Retrofit使用Kotlin协程发送请求
Retrofit2.6开始增加了对Kotlin协程的支持,可以通过suspend函数进行异步调用.本文简单介绍一下Retrofit中协程的使用 导入依赖 app的build文件中加入: impleme ...
- 探究国内CRM系统哪家公司做的最好?
国内CRM系统哪家公司做的最好?相信这是很多人关心的话题.但这是一个伪命题,因为无论什么产品,都没有一个确定的结论来证明哪个产品最好.我们只能根据它的功能.适用性.价格等来判断哪个最合适.所以小编只能 ...
- 树莓派4B-SPI读写flash-FM25CL16B(同时支持FM25CL64等其它系列Flash)
1.树莓派SPI介绍 4B的引脚如下图所示: 其中Pin19.21.23是SPI0,接口定义如下所示: 时钟(SPI CLK, SCLK) 主机输出.从机输入(MOSI) 主机输入.从机输出(MISO ...
- 用java实现斐波那契数列
斐波那契数列源于数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入的计算问题.假设某种兔子兔子,出生第一个月变成大兔子,大兔子再过一个月能生下一对小兔子,且一年 ...
- 对象池技术和通用实现GenericObjectPool
对象池技术其实蛮常见的,比如线程池.数据库连接池 他们的特点是:对象创建代价较高.比较消耗资源.比较耗时: 比如 mysql数据库连接建立就要先建立 tcp三次握手.发送用户名/密码.进行身份校验.权 ...
- CentOS-关闭防火墙和禁用安全策略
关闭防火墙 默认使用的是firewall作为防火墙 查看防火墙状态 $ firewall-cmd --state 停止firewall $ systemctl stop firewalld.servi ...
- SpringCloud:Eureka 配置心跳机制
Server服务端 server: port: 8761 eureka: client: #实例是否在eureka服务器上注册自己的信息以提供其他服务发现,默认为true re ...
- 使用RestTemplate发送post请求,请求头中封装参数
最近使用RestTemplate发送post请求,遇到了很多问题,如转换httpMessage失败.中文乱码等,调了好久才找到下面较为简便的方法: RestTemplate restTemplate ...