【lightoj-1046】Rider(BFS)
链接:http://www.lightoj.com/volume_showproblem.php?problem=1046
题意:
给m*n的棋盘,数字k代表这个位置上有棋子,并且一步可以连续跳1-k下,求所有棋子跳到同一位置的最小步数。
思路
容易想到用bfs,计算所有棋子在一个格子的步数,找出步数最小的格子就可以了。
#include<bits/stdc++.h>
using namespace std;
char mp[][];
int num[][], n, m;
bool vis[][][];
struct node
{
int x, y, step, jumpnum;
};
node s;
void bfs(int cnt, int tiao)
{
int nx[][] = {{,},{,-},{,},{,-},{-,},{-,-},{-,},{-,-}};
queue<node>Q;
Q.push(s);
while(!Q.empty())
{
s = Q.front();
Q.pop();
for(int k = ; k < ; k++)
{
node t = s; //这句一定要放在循环里!!之前放在外边一直WA..
t.x = s.x + nx[k][];
t.y = s.y + nx[k][];
if(t.x<||t.x>=m||t.y<||t.y>=n||vis[cnt][t.x][t.y]) continue;
if(t.jumpnum == )
{
t.jumpnum = tiao;
vis[cnt][t.x][t.y] = ;
if(tiao == ) //若k=1那么也要步数+1
t.step = s.step+;
Q.push(t);
}
else if(t.jumpnum == tiao)
{
t.step = s.step+;
t.jumpnum = s.jumpnum -;
vis[cnt][t.x][t.y] = ;
Q.push(t);
}
else //t.jumpnum减到1之前都不增加步数
{
t.jumpnum = s.jumpnum -;
vis[cnt][t.x][t.y] = ;
Q.push(t);
}
num[t.x][t.y] += t.step;
}
}
}
int main()
{
int t, cas = ;
cin>>t;
//freopen("1.txt", "w", stdout);
while(t--)
{
int cnt = ;
memset(num, , sizeof num);
memset(vis, , sizeof vis);
scanf("%d%d", &m, &n);
for(int i = ; i < m; i++)
scanf("%s", mp[i]);
for(int i = ; i < m; i++)
for(int j = ; j < n; j++)
{
if(mp[i][j] != '.')
{
vis[++cnt][i][j] = ;
s.x = i, s.y = j, s.jumpnum = mp[i][j]-'', s.step = ;
bfs(cnt, mp[i][j]-'');
}
}
int ans = 1e9, ii, jj, k;
for(int i = ; i < m; i++)
for(int j = ; j < n; j++)
{
for(k = ; k <= cnt; k++)
if(!vis[k][i][j]) break;
if(k==cnt+&&ans > num[i][j])
ans = num[i][j], ii = i, jj = j;
}
printf("Case %d: %d\n", ++cas, ans==1e9?-:ans);
}
}
【lightoj-1046】Rider(BFS)的更多相关文章
- 【BZOJ 1046】 1046: [HAOI2007]上升序列
1046: [HAOI2007]上升序列 Description 对于一个给定的S={a1,a2,a3,-,an},若有P={ax1,ax2,ax3,-,axm},满足(x1 < x2 < ...
- 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】
(是时候为五一培训准备真正的技术了qwq) part1 队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...
- 【Codeforces 1037D】Valid BFS?
[链接] 我是链接,点我呀:) [题意] 让你判断一个序列是否可能为一个bfs的序列 [题解] 先dfs出来每一层有多少个点,以及每个点是属于哪一层的. 每一层的bfs如果有先后顺序的话,下一层的节点 ...
- 【LightOJ - 1205】Palindromic Numbers
[链接]https://cn.vjudge.net/problem/LightOJ-1205 [题意] 求出L..R范围内的回文个数 [题解] 数位DP; 先求出1..x里面的回文串个数.则做一下前缀 ...
- 【NOIP1999】【Codevs 1046】旅行家的预算
http://codevs.cn/problem/1046/ Solution: 贪心,如果当前油价很低,它就比起当前剩余油的价还低就可以替换,并且每次加满,最后把剩的油卖掉即可 油价用单调链表(不知 ...
- 【OpenJ_Bailian - 2790】迷宫(bfs)
-->迷宫 Descriptions: 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不 ...
- 【图论算法】Dijstra&BFS
选择V-S中的点加入S时用了贪心思想,即求d[]中legth最小且未被标记(未加入加入S)的点. 一点都没优化的实现: import java.lang.reflect.Array; /** * Cr ...
- 【LightOJ 1422】Halloween Costumes(区间DP)
题 题意 告诉我们每天要穿第几号衣服,规定可以套好多衣服,所以每天可以套上一件新的该号衣服,也可以脱掉一直到该号衣服在最外面.求最少需要几件衣服. 分析 DP,dp[i][j]表示第i天到第j天不脱第 ...
- 【floyd求最小环】【Vijos 1046】【观光旅游】
标签:图结构 最短路 题目大意:给你一个无向图,至少经过3个节点的简单回路(不能包括其他环) 一开始的思路:用一个NUM[i][j]表示i到j的最短路经过几个节点,显然解法不太优美,而且还是错的 再想 ...
随机推荐
- Python 模块之 pyexcel_xls
一.适用场景 在很多数据统计或者数据分析的场景中,我们都会使用到excel: 在一些系统中我们也会使用excel作为数据导入和导出的方式,那么如何使用python加以辅助我们快速进行excel数据做更 ...
- 【转】记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServe ...
- RTSP服务端转发服务(live555库中的testH264VideoStreamer.cpp和testOnDemandRTSPServer.cpp实例)
1.h264文件的推送 testH264VideoStreamer.cpp文件的开头就定义了 char const* inputFileName = "test.264"; 后面接 ...
- Xamrin开发安卓笔记(二)
http://www.cnblogs.com/minCS/p/4112617.html Xamrin开发安卓笔记(二) 安装篇 Xamrin开发安卓笔记(一) 昨天调理一天AAPT.EXE 被推出 ...
- React:快速上手(1)——基础知识
React:快速上手(1)——基础知识 React(有时叫React.js或ReactJS)是一个为数据提供渲染为HTML视图的开源JavaScript库,用于构建用户界面. JSX.元素及渲染 1. ...
- java中文转Unicode
public String cnToUnicode(String cn) { char[] chars = cn.toCharArray(); String returnStr = "&qu ...
- Flume1.7.0的安装与使用
Flume下载后,解压,新增一个配置文件,写入配置即可 我将配置文件写在 conf 下,取名为 flume-conf-spooldir.properties Flume 运行命令: bin/flume ...
- linux(6/17)--文件打包上传和下载
tar命令 命令功能 用来压缩和解压文件 命令格式 tar[必要参数][选择参数][文件] tar打包工具 -f ##指定生成包的名字,建议 -f单独写成一个参数 --delete filename ...
- 谁说程序员不懂爱情【Her】
2014.8.17日 我和我女朋友恋爱两周年的日子.走到今天很不容易,我很珍惜. 就想趁这机会,尽自己能力做一个特别的礼物. 这款应用两周前就开始计划了.也熬了几个晚上.接触wp开发时间不长,第一款应 ...
- Madplay移植到mini2440开发板【转】
本文转载自:https://blog.csdn.net/simanstar/article/details/24035379 madplay交叉编译 交叉编译器:arm-linux-gcc 3.4.1 ...