Description

2255是一个傻X,他连自己家灯不亮了都不知道。
某天TZ大神路过他家,发现了这一情况,
于是TZ开始行侠仗义了。
TZ发现是电路板的问题,
他打开了电路板,发现线路根本没有连上!!
于是他强大的脑力可以使某个格子上的线路从\变为/,
或者从/变为\。
2255不会电路(因为他什么都不会),但是他想知道TZ最少要用多少次脑力才能使他家的灯变亮。
如果无法变亮,输出“NO SOLUTION”。

n,m<=500

Sample Input

3 5
\\/\\
\\///
/\\\\

Sample Output

1

Solution

考虑当前格子$(i,j)$,若当前格子为$'\'$,那么$(i,j)$到$(i+1,j+1)$的花费为0,$(i+1,j)$到$(i,j+1)$的花费为1.
反之亦然。

Code

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#define N (2009)
#define id(x,y) (x-1)*(m+1)+y
using namespace std; struct Edge{int to,next,len;}edge[N*N];
struct Node
{
int num,dis;
bool operator < (const Node a) const {return dis>a.dis;}
};
int n,m,c,a[N][N],dis[N*N],vis[N*N];
int head[N*N],num_edge;
char s[N];
priority_queue<Node>q; void add(int u,int v,int l)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
edge[num_edge].len=l;
head[u]=num_edge;
} void Dijkstra(int s)
{
memset(dis,0x7f,sizeof(dis));
dis[s]=; q.push((Node){s,});
while (!q.empty())
{
Node x=q.top(); q.pop();
if (vis[x.num]) continue;
vis[x.num]=true;
for (int i=head[x.num]; i; i=edge[i].next)
if (!vis[edge[i].to] && dis[x.num]+edge[i].len<dis[edge[i].to])
{
dis[edge[i].to]=dis[x.num]+edge[i].len;
q.push((Node){edge[i].to,dis[edge[i].to]});
}
}
} int main()
{
scanf("%d%d",&n,&m);
for (int i=; i<=n; ++i)
{
scanf("%s",s);
for (int j=; j<=m; ++j)
a[i][j]=(s[j-]=='\\')?:;
}
for (int i=; i<=n; ++i)
for (int j=; j<=m; ++j)
{
if (a[i][j]==)
{
add(id(i,j),id(i+,j+),); add(id(i+,j+),id(i,j),);
add(id(i+,j),id(i,j+),); add(id(i,j+),id(i+,j),);
}
else
{
add(id(i,j),id(i+,j+),); add(id(i+,j+),id(i,j),);
add(id(i+,j),id(i,j+),); add(id(i,j+),id(i+,j),);
}
}
Dijkstra();
if (dis[id(n+,m+)]>1e9) puts("NO SOLUTION");
else printf("%d\n",dis[id(n+,m+)]);
}

BZOJ2346:[Baltic 2011]Lamp(最短路)的更多相关文章

  1. bzoj2346 & loj2632 [Baltic 2011]Lamp 最短路

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=2346 https://loj.ac/problem/2632 题解 普及组难度的题都要想十几分 ...

  2. 【搜索 ex-BFS】bzoj2346: [Baltic 2011]Lamp

    关于图中边权非零即一的宽度优先搜索 Description 译自 BalticOI 2011 Day1 T3「Switch the Lamp On」有一种正方形的电路元件,在它的两组相对顶点中,有一组 ...

  3. bzoj2346[Baltic 2011]Lamp

    Description 2255是一个傻X,他连自己家灯不亮了都不知道. 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了. TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连 ...

  4. Bzoj 2346: [Baltic 2011]Lamp dijkstra,堆

    2346: [Baltic 2011]Lamp Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 428  Solved: 179[Submit][Sta ...

  5. [Baltic 2011]Lamp BZOJ2346

    分析: 建图最短路,比较裸. 我们可以考虑,如果是‘\’那么,左上连右下边权为0,左下连右上边权为1,反之亦然. 卡裸spfa,加点优化能过,我就直接改成的堆优化Dijkstra 附上代码: #inc ...

  6. 【bzoj2346】[Baltic 2011]Lamp 堆优化Dijkstra

    题目描述 2255是一个傻X,他连自己家灯不亮了都不知道.某天TZ大神路过他家,发现了这一情况,于是TZ开始行侠仗义了.TZ发现是电路板的问题,他打开了电路板,发现线路根本没有连上!!于是他强大的脑力 ...

  7. 【刷题】BZOJ 2346 [Baltic 2011]Lamp

    Description 2255是一个傻X,他连自己家灯不亮了都不知道. 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了. TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连 ...

  8. BZOJ 2346: [Baltic 2011]Lamp Dijkstra

    不难发现如果一个边的方向改变,就一定不会改回来(这样肯定不是最短路). 所以就直接建双向边,边权为 $0$ 代表不改变,边权为 $1$ 代表改变,跑一个最短路即可. #include <bits ...

  9. BZOJ2348: [Baltic 2011]Plagiarism

    2348: [Baltic 2011]Plagiarism Time Limit: 1 Sec  Memory Limit: 256 MBSubmit: 304  Solved: 141[Submit ...

随机推荐

  1. 用jQuery来绑定事件的3种方法和区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. C#操作Redis List 列表

    /// <summary> /// Redis 列表 /// </summary> public static void Redis_List() { RedisClient ...

  3. [转]象棋AI算法(二)

    本文转自:http://blog.csdn.net/u012723995/article/details/47143569 参考文献:http://bbs.blueidea.com/thread-30 ...

  4. Javascript制作伸缩的二级菜单

    1.javascript方法 <style> #navigation { width: 200px; font-family: Arial; } #navigation > ul { ...

  5. [android] 安卓自定义样式和主题

    简单练习自定义样式和主题,样式是加在View上,主题是加在Application或者Activity上 styles.xml <?xml version="1.0" enco ...

  6. 在线HTML文档编辑器使用入门之图片上传与图片管理的实现

    在线HTML文档编辑器使用入门之图片上传与图片管理的实现: 官方网址: http://kindeditor.net/demo.php 开发步骤: 1.开发中只需要导入选中的文件(通常在 webapp ...

  7. 第十三章.MySQL数据库与JDBC编程(下)

    JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: publi ...

  8. SPOJ:COT2 Count on a tree II

    题意 给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数. n=40000,m=100000 Sol 树上莫队模板题 # include <bits/stdc++.h ...

  9. 【转】R树空间索引

    R树在数据库等领域做出的功绩是非常显著的.它很好的解决了在高维空间搜索等问题.举个R树在现实领域中能够解决的例子吧:查找20英里以内所有的餐厅.如果没有R树你会怎么解决?一般情况下我们会把餐厅的坐标( ...

  10. 各种优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)

    前言 这里讨论的优化问题指的是,给定目标函数f(x),我们需要找到一组参数x,使得f(x)的值最小. 本文以下内容假设读者已经了解机器学习基本知识,和梯度下降的原理. SGD SGD指stochast ...