Luogu P3956

本题是一道简单的SPFA

具体看程序

#include<iostream>
#include<cstdio>
using namespace std;
const int wayx[4]={1,0,-1,0},wayy[4]={0,1,0,-1};//4个方向
int n,m,cost[200][200],a[200][200],magic[200][200],x,y,c;
bool visit[200][200];//标志某个点有没有在队列里面
struct data
{
int x,y;
}que[100000];//队列内的点的坐标
void first()
{
for (int i=1;i<=m;i++)
for (int j=1;j<=m;j++)
cost[i][j]=2147483640;
cost[1][1]=0;
//初始化,起点价值为0,其他均为无穷大
}
void spfa()//程序主体 SPFA
{
int head=0,tail=1;
que[head].x=1;que[head].y=1;
visit[1][1]=true;
while (head!=tail)
{
int nowx=que[head].x,nowy=que[head].y;
if (magic[nowx][nowy]) a[nowx][nowy]=magic[nowx][nowy];
//如果这个点用过魔法,那么让这个点标记为变的颜色
for (int i=0;i<4;i++)
{
int movex=nowx+wayx[i],movey=nowy+wayy[i],nowc=0;
if (movex<0||movex>m) continue;
if (movey<0||movey>m) continue;
//防止越界
if (a[movex][movey]==1&&a[nowx][nowy]==2) nowc+=1;
if (a[movex][movey]==2&&a[nowx][nowy]==1) nowc+=1;
if (a[movex][movey]==0)
{ if (magic[nowx][nowy]) nowc=cost[movex][movey]-cost[nowx][nowy]+1;
else
{
nowc+=2;
}
}
if (cost[movex][movey]>cost[nowx][nowy]+nowc)//松弛
{
if (!visit[movex][movey])
{
que[tail].x=movex;
que[tail].y=movey;
tail++;
visit[movex][movey]=true;
}
cost[movex][movey]=cost[nowx][nowy]+nowc;
if (nowc==2) magic[movex][movey]=a[nowx][nowy];
}
}
visit[nowx][nowy]=false;
if (magic[nowx][nowy]) a[nowx][nowy]=0;
magic[nowx][nowy]=0;
head++;
}
}
int main()
{
cin>>m>>n;
for (int i=1;i<=n;i++)
{
cin>>x>>y>>c;
a[x][y]=c+1;
}
first();
spfa();
if (cost[m][m]==2147483640) cout<<-1;//即没有路径可以到达终点
else cout<<cost[m][m];
return 0;
}

【NOIP2017】【Luogu P3956】【SPFA】棋盘的更多相关文章

  1. [luogu P1169] [ZJOI2007]棋盘制作

    [luogu P1169] [ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的 ...

  2. [luogu]P1169 [ZJOI2007]棋盘制作[DP][单调栈]

    [luogu]P1169 [ZJOI]棋盘制作 ——!x^n+y^n=z^n 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋 ...

  3. 悬线法 || BZOJ 1057: [ZJOI2007]棋盘制作 || Luogu P1169 [ZJOI2007]棋盘制作

    题面:P1169 [ZJOI2007]棋盘制作 题解: 基本是悬线法板子,只是建图判断时有一点点不同. 代码: #include<cstdio> #include<cstring&g ...

  4. 【洛谷p3956】棋盘

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

  5. Luogu 1169 [ZJOI2007]棋盘制作 - 动态规划+单调栈

    Description 给一个01矩阵, 求出最大的01交错的正方形和最大的01交错的矩阵 Solution 用动态规划求出最大的正方形, 用单调栈求出最大的矩阵. 在这里仅介绍求出最大正方形(求最大 ...

  6. 【Luogu】P1169棋盘制作(单调栈)

    题目链接 唉……这种题放在NOIP以前我是会做的……但是为什么现在反而不会了…… 单调栈.预处理每个点向上能扩展的最大距离,左右用两遍单调栈扫一遍.注意边界. #include<cstdio&g ...

  7. [NOIp2017] luogu P3952 时间复杂度

    跪着看评测很优秀. 题目描述 给你若干个程序,这些程序只有 For 循环,求这些程序的时间复杂度. Solution 大模拟.讲下细节. flag[i]flag[i]flag[i] 表示第 iii 位 ...

  8. luogu 1169 [ZJOI2007]棋盘制作 悬线dp

    悬线法,虽然得不到局部最优解,但是一定能得到全局最优解的算法,十分神奇~ #include <cstdio> #include <algorithm> #define N 20 ...

  9. 【Luogu】P1436 棋盘分割 题解

    嗯,点开题目,哇!是一道闪亮亮的蓝题! 不要被吓到了,其实,这道题就是一个简单的DP啦! 我们设 \(f[x1][y1][x2][y2][c]\) 为以 \((x1,y1)\) 为左上角,以 \((x ...

随机推荐

  1. 追查Could not get a databaseId from dataSource

    Mybatis 创建连接池的时候报错: ERROR 2017-03-15 00:44:50,333 commons.JakartaCommonsLoggingImpl:38 Could not get ...

  2. 分享一次大厂的技术面试通过,却因学历被拒发 offer 的悲惨经历

    概述 今天心情很down,快周末了,说点不开心的事情给大家开心一下,上周面试心仪已久的大厂,技术面很顺利的通过一面/二面/三面,最后到HR面也很顺利,然后被问到学历(自考本科)后,HR 语气发生一些转 ...

  3. NetworkManager网络通讯_NetworkManager(二)

    本文主要来实现一下自定UI(实现HUD的功能),并对Network Manger进行深入的讲解. 1)自定义manager 创建脚本CustomerUnetManger,并继承自NetworkMang ...

  4. Dotween 应用

    dotween是做缓动比较简单实用的插件,下面就使用经验进行浅谈 1)通用方法:如下图官网截图所示,如果看不懂可以跳过,这是一个通用方法,前两个参数为委托类型,可以用lambda表达式,也可以直接写成 ...

  5. 使用 Nginx 搭建静态资源 web 服务器

    在搭建网站的时候,往往会加载很多的图片,如果都从 Tomcat 服务器来获取静态资源,这样会增加服务器的负载,使得服务器运行 速度非常慢,这时可以使用 Nginx 服务器来加载这些静态资源,这样就可以 ...

  6. Linux基本指令与作用

    在Linux操作系统中,有不同于windows的操作,可以用指令来进行操作. 指令 ls:查看文件 ls -a:查看隐藏文件 cd:移动到某个路径之中 clear:清屏rm:删除touch:创建mv: ...

  7. Microsoft.Extensions.DependencyInjection 之三:展开测试

    目录 前文回顾 IServiceCallSite CallSiteFactory ServiceProviderEngine CompiledServiceProviderEngine Dynamic ...

  8. [考试反思]0829NOIP模拟测试33:仰望

    ,160,160,160... 凑和吧,但是莫名开心. 然而这次没有什么想讲的. T1,等比数列求和,XX题,水极,20分钟找规律,找错,快速幂又打错,没检查,10分. T2,想复杂了,想了很久效率很 ...

  9. VM安装CentOS系统

    本篇文章主要介绍了VMware安装Centos7超详细过程(图文) 1.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:CentOS7 ,如果没有镜像可以在官网下载 :htt ...

  10. css3自定义移动端滚动条

    css3自定义移动端滚动条<pre>/*定义滚动条宽 高度是根据内容设置的高度决定的*/::-webkit-scrollbar{ width: 5px;} /*定义滚动条轨道 内阴影+圆角 ...