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. react中使用redux简易案例讲解

    为什么我想要使用redux? 前段时间初步上手了react,最近在使用react的过程中发现对于组件之间通信的需求比较迫切,尤其是在axios异步请求后端数据的时候,这样的需求是特别强烈的!举个例子: ...

  2. django-URL实例命名空间(十一)

    每生成一个地址,都是一个实例.使用实例命名空间,针对于一个app而言. book/views.py from django.http import HttpResponse from django.s ...

  3. SpringCloud之异常报警通知(八)

    在之前整合降级的基础上,整合redis,达到报警的效果(redis的启动还是之前boot里面整合的redis) order-service pom.xml <dependency> < ...

  4. mybatis代理机制讲解

    问题描述 在使用Mybatis开发中,或者和Spring整合中,在Dao层中的Mapper接口与xml中的sql对应着,在service中直接调用Dao中的方法就可以直接访问sql.如下所示: /** ...

  5. go中的数据结构切片-slice

    1.部分基本类型 go中的类型与c的相似,常用类型有一个特例:byte类型,即字节类型,长度为,默认值是0: bytes = []btye{'h', 'e', 'l', 'l', 'o'} 变量byt ...

  6. 通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战

    前情提要: 通俗地说逻辑回归[Logistic regression]算法(一) 逻辑回归模型原理介绍 上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklear ...

  7. C#/.Net开发入门篇(1)——开发工具安装

    众所周知,工欲善其事必先利其器,要想砍柴快一定得有把好刀,那么要想代码写的有效率.质量高一个趁手的编辑器是必不可少的,写代码不可能就用系统自带的文本编辑器(如果是大佬当我没说),这里我推荐各位使用微软 ...

  8. css3 preserve-3d 的理解 注意IOS上的兼容

    css3 preserve-3d 的理解 <pre><!DOCTYPE html><html lang="en"> <head> & ...

  9. 004.Kubernetes二进制部署创建证书

    一 创建CA证书和密钥 1.1 安装cfssl工具集 [root@k8smaster01 ~]# mkdir -p /opt/k8s/cert [root@k8smaster01 ~]# curl - ...

  10. 130道ASP.NET面试题(二)

    71.什么是反射?答:动态获取程序集信息 72.用Singleton如何写设计模式答:static属性里面new ,构造函数private 73.什么是Application Pool?答:Web应用 ...