牛客 - 车辆调度(dfs)
题目链接:点击查看
题目大意:给出一个 n * m 的矩阵,其中 ' R ' 表示遥控车,' D ' 表示目的地,' X ' 表示障碍物,每一秒都可以操控任意一个遥控车向四个方向中的任意方向移动,不过移动必须满足直到撞到空地的边界、障碍物或其他遥控车后才能停止,很像小时候玩过的推冰块游戏。然后问,能否存在一种方法,使得在第 k 分钟时使得任意一个遥控车到达任意一个目的地
题目分析:因为所有数据都很小,我们不妨计算一下dfs爆搜的时间复杂度,至多有 4 个遥控车,每个遥控车有 4 个方向,也就是说每一秒钟有 4 * 4 = 16 种情况,时间 k 至多只有 5 秒,也就是说时间复杂度为 16^5 ,1e6 左右,这样直接模拟就好了
这个题目主要是为了纪念一下第一次自己动手写dfs,并且 1A 的题目吧
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
using namespace std;typedef long long LL;typedef unsigned long long ull;const LL inf=0x3f3f3f3f;const int N=15;const int b[4][2]={0,1,0,-1,1,0,-1,0};int n,m,k;char maze[N][N];bool vis[N][N];vector<pair<int,int>>pos;bool check()
{for(int i=0;i<pos.size();i++)if(vis[pos[i].first][pos[i].second])return true;return false;
}bool check_bound(int x,int y)
{return x>0&&y>0&&x<=n&&y<=m;
}bool dfs(int step)
{if(step==0) return check();for(int i=0;i<pos.size();i++)//枚举车辆 for(int k=0;k<4;k++)//枚举方向 {int sx=pos[i].first,sy=pos[i].second;maze[sx][sy]='.';int x=sx,y=sy;int xx=x+b[k][0];int yy=y+b[k][1];while(check_bound(xx,yy)&&maze[xx][yy]!='R'&&maze[xx][yy]!='X'){x=xx,y=yy;xx+=b[k][0];yy+=b[k][1];}maze[x][y]='R';pos[i].first=x,pos[i].second=y;if(dfs(step-1))return true;pos[i].first=sx,pos[i].second=sy;maze[x][y]='.';maze[sx][sy]='R';}return false;
}int main()
{
#ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
#endif
// ios::sync_with_stdio(false);scanf("%d%d%d",&m,&n,&k);for(int i=1;i<=n;i++)scanf("%s",maze[i]+1);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(maze[i][j]=='D')vis[i][j]=true;if(maze[i][j]=='R')pos.push_back(make_pair(i,j));}if(dfs(k))puts("YES");elseputs("NO");return 0;
}
牛客 - 车辆调度(dfs)相关推荐
- 【牛客每日一题】4.15 Treepath 题解(树上dfs/树形DP)
题目链接:https://ac.nowcoder.com/acm/problem/14248 来源:牛客网 题目描述 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x ...
- 变异蛮牛 树,dfs,二分图染色 牛客白月赛44
链接:https://ac.nowcoder.com/acm/contest/11221/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...
- 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)...
链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...
- 牛客小白月赛12 H 华华和月月种树 (离线dfs序+线段树)
链接:https://ac.nowcoder.com/acm/contest/392/H 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言2621 ...
- 树的距离(牛客网树上主席树+dfs序)
链接:https://ac.nowcoder.com/acm/problem/14415 来源:牛客网 题目描述 wyf非常喜欢树.一棵有根数树上有N个节点,1号点是他的根,每条边都有一个距离,而wy ...
- 【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)
题干: 链接:https://ac.nowcoder.com/acm/contest/882/F 来源:牛客网 Given 2N people, you need to assign each of ...
- 【牛客 - 157D】插排树(dfs,树形dp)
题干: 链接:https://ac.nowcoder.com/acm/contest/157/D 来源:牛客网 一年一度的山东省oi夏令营又开始了,每到这个季节,山东的oier们都会欢聚这里,一起学( ...
- 【牛客 - 157B】凤凰(树上并查集,dfs)
题干: 链接:https://ac.nowcoder.com/acm/contest/157/B 来源:牛客网 题目描述 传说,凤凰是百鸟之王.有一天,凤凰要召开百鸟大会,百鸟国是一个由n个节点组成的 ...
- 【牛客 - 373C】抓捕盗窃犯(连通图,思维,dfs 或 并查集)
题干: 链接:https://ac.nowcoder.com/acm/contest/373/C 来源:牛客网 Q市发生了一起特大盗窃案.这起盗窃案是由多名盗窃犯联合实施的,你要做的就是尽可能多的抓捕 ...
最新文章
- 绿联 蓝牙适配器 linux,绿联蓝牙适配器
- modelandview 可以返回html么_python爬虫反反爬,你几乎可以横扫大部分 css 字体加密的网站...
- 向周鸿祎的360安全浏览器学互联网产品运营和推广
- [转]ASP.NET MVC4中@model使用多个类型实例的方法
- Python的第三方库xlwt
- map slice综合示例 go语言
- mysql进程多_MySQL进程列表的进程太多。正常吗?
- 图:中国航天六院演讲比赛使用的用户自定义的PPT界面_[评委计分系统-双屏专业版]提供支持
- php单页搜索引擎小偷,PIGO mini php搜索小偷 v2.0 正式版
- 领域驱动设计(Domain Driven Design,DDD)
- kettle抽取数据
- 通俗易懂的Spatial Transformer Networks(STN)(二)
- 阅读“变形计”:一场偶然与非偶然的相遇
- php 输出七芒星,SongNet:硬格式控制下的文本生成
- Calamari 安装
- 用OneTab减少Chrome内存消耗
- Java图片嵌套图片
- Ubuntu18.04网络连接图标上显示问号
- BananaPi Wifi 连接
- android 判断文件是否存在