bzoj 2364
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2346
比较裸的最短路(' ' ) 水题又多了一道
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std; const int maxn = 400010;
const int maxe = 2001000;
const int maxl = 510;
const int INF = 0x3f3f3f3f; struct edge {
int t, d;
edge* next;
}e[maxe * 2], *head[maxn]; int ne = 0; void addedge(int f, int t, int d) {
e[ne].t = t, e[ne].d = d, e[ne].next = head[f], head[f] = e + ne ++;
e[ne].t = f, e[ne].d = d, e[ne].next = head[t], head[t] = e + ne ++;
} struct node {
int pos, dis;
node(int a, int b) {
pos = a, dis = b;
}
}; bool operator < (const node &a, const node &b) {
return a.dis > b.dis;
} priority_queue <node> q;
int dis[maxn]; void dijkstra(int s, int t) {
memset(dis, INF, sizeof(dis)); dis[s] = 0;
for(int i = s; i <= t; ++ i) q.push(node(i, dis[i]));
while(!q.empty()) {
node x = q.top(); q.pop();
if(x.dis != dis[x.pos]) continue;
for(edge* p = head[x.pos]; p; p = p-> next)
if(dis[p-> t] > dis[x.pos] + p-> d)
dis[p-> t] = dis[x.pos] + p-> d, q.push(node(p-> t, dis[p-> t]));
}
} int n, m; int getpos(int x, int t) {
return (x - 1) * (m + 1) + t;
} char s[maxl]; void sov() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++ i) {
scanf("%s", s + 1);
for(int j = 1; j <= m; ++ j) {
if(s[j] == '/') addedge(getpos(i, j), getpos(i + 1, j + 1), 1), addedge(getpos(i + 1, j), getpos(i, j + 1), 0);
else addedge(getpos(i, j), getpos(i + 1, j + 1), 0), addedge(getpos(i + 1, j), getpos(i, j + 1), 1);
}
}
dijkstra(getpos(1, 1), getpos(n + 1, m + 1));
if(dis[getpos(n + 1, m + 1)] == INF) printf("NO SOLUTION\n");
else printf("%d\n", dis[getpos(n + 1, m + 1)]);
} int main() {
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
sov();
return 0;
}
bzoj 2364的更多相关文章
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
- 【splay】文艺平衡树 BZOJ 3223
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 ...
- bzoj 刷水
bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cst ...
随机推荐
- Redis5离线安装
1. 直接上redis官网安装包, 然后上传服务器 https://redis.io/download 2. 解压 tar -zxvf redis-5.0.6.tar.gz 3. 进入redis根目标 ...
- C# 简单软件有效期注册的实现
◆需求:公司一直以来对开发的产品都没有进行使用时间的控制,要么就是将日期限制写死在程序里面,每次都要编译新程序再发给客户,很不方便.于是公司让我写个模块,要求如下:1.无论哪个新开发的程序只要调用这个 ...
- [CSP-S模拟测试]:联(小清新线段树)
题目描述 由于出题人懒所以没有背景.一个无限长的$01$序列,初始全为$0$,每次选择一个区间$[l,r]$进行操作,有三种操作:$\bullet 1\ l\ r$将$[l,r]$中所有元素变成$1$ ...
- codeforces 557D Vitaly and Cycle
题意简述 给定一个图 求至少添加多少条边使得它存在奇环 并求出添加的方案数 (注意不考虑自环) ---------------------------------------------------- ...
- 关于Java中编码集的有趣现象和解释
这是在整理另一篇博客的时候发现的一个有趣的现象,是这样描述的:我们都知道Java默认使用的是UniCode编码集,我们也知道char类型占用两个字节.所以奇怪的现象又发生了(见代码): @Test p ...
- JS删除对象属性
项目中有些属性使用之后需要重置 var user = {}; user.name = "123"; user.age="30"; console.log(use ...
- 网络命令-nc(一)
一直在linux环境下编程,但却没有用过nc命令,不过最近发现Netcat这个命令-nc,发现真的蛮强大的, 为了备忘,就写了这个博客吧,不求全,只求把自己觉得很有用的命令整理出来,这篇文章估计要长期 ...
- 基于spark邮件自动分类
代码放在github上:click me 一.数据说明 数据集为英文语料集,一共包含20种类别的邮件,除了类别soc.religion.christian的邮件数为997以外每个类别的邮件数都是100 ...
- python 自动把mysql备份文件发送邮箱
import os import time import sched import smtplib from email.mime.text import MIMEText from email.he ...
- fiddler 暂停抓包
或者点击左下角 capturing