洛谷P2775 机器人路径规划问题
至今没看懂这深搜怎么写的……
//minamoto
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
char buf[<<],*p1=buf,*p2=buf;
inline int read(){
#define num ch-'0'
char ch;bool flag=;int res;
while(!isdigit(ch=getc()))
(ch=='-')&&(flag=true);
for(res=num;isdigit(ch=getc());res=res*+num);
(flag)&&(res=-res);
#undef num
return res;
}
#define Nosolution ((n==19)?20:30)
const int N=;
int w[N][N];
inline void add(int u,int v){
w[u][++w[u][]]=v;
w[v][++w[v][]]=u;
}
int Brk[N],b[N],lca[N][N],d[N],vis[N],p[N],has[N];
int s,t,n,dep,now;
queue<int> q;
void spfa(int s){
memset(d,0x3f,sizeof(d));
d[s]=,q.push(s),vis[s]=;
while(!q.empty()){
int u=q.front();q.pop();vis[u]=;
for(int i=;i<=w[u][];++i){
int v=w[u][i];
if(d[v]>d[u]+){
d[v]=d[u]+,p[v]=u;
if(!vis[v]) vis[v]=,q.push(v);
}
}
}
}
int cost=;
bool dfs(int deep){
if(b[t]==) return true;
if(deep+lca[now][t]+cost>dep) return false;
for(int i=;i<=Brk[];++i){
int u=Brk[i];
for(int j=;j<=w[u][];++j){
int v=w[u][j];
if(!b[v]){
Brk[i]=v;
if(u==now) now=v;
if(has[u]&&!has[v]&&b[u]!=) --cost;
if(has[v]&&!has[u]&&b[u]!=) ++cost;
swap(b[v],b[u]);
if(dfs(deep+)) return true;
if(has[u]&&!has[v]&&b[v]!=) ++cost;
if(has[v]&&!has[u]&&b[v]!=) --cost;
if(now==v) now=u;
Brk[i]=u;
swap(b[v],b[u]);
}
}
}
return false;
}
int main(){
//freopen("testdata.in","r",stdin);
n=read(),s=read(),t=read();
now=s;
Brk[++Brk[]]=s;
for(int i=;i<n;++i){
b[i]=read()^;
if(b[i]) Brk[++Brk[]]=i;
int s,v;
s=read();
for(int j=;j<s;++j){
v=read();
if(!lca[i][v]&&lca[v][i]){
add(i,v);
}
lca[i][v]=;
}
}
b[s]=;
for(int i=;i<n;++i){
spfa(i);
for(int j=;j<n;++j) lca[i][j]=d[j];
if(i==s){
int u=t;
while(u!=s){
has[u]=;
if(b[u]==) ++cost;
u=p[u];
}
has[s]=;
}
}
for(dep=;dep<=;++dep)
if(dfs()) return printf("%d\n",dep),;
printf("%d\n",Nosolution);
return ;
}
洛谷P2775 机器人路径规划问题的更多相关文章
- 洛谷P1126 机器人搬重物
洛谷1126 机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径1.6米的球.在试验阶段,机器人被用于在一个储藏室中搬运货物.储藏室是一个N*M的网格, ...
- V-rep学习笔记:机器人路径规划2
路径规划问题是机器人学研究的一个重要领域,它是指给定操作环境以及起始和目标的位置姿态,要求选择一条从起始点到目标点的路径,使运动物体(移动机器人或机械臂)能安全.无碰撞地通过所有的障碍物而达到目标位置 ...
- ROS机器人路径规划介绍--全局规划
ROS机器人路径规划算法主要包括2个部分:1)全局路径规划算法:2)局部路径规划算法: 一.全局路径规划 global planner ROS 的navigation官方功能包提供了三种全局路径规划器 ...
- 机器人路径规划其一 Dijkstra Algorithm【附动态图源码】
首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...
- 机器人路径规划其二 A-Star Algorithm【附动态图源码】
首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...
- 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...
- V-rep学习笔记:机器人路径规划1
Motion Planning Library V-REP 从3.3.0开始,使用运动规划库OMPL作为插件,通过调用API的方式代替以前的方法进行运动规划(The old path/motion ...
- 洛谷p1052过河 路径压缩+dp
洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream& ...
- 洛谷P2542 [AHOI2005]航线规划(LCT,双连通分量,并查集)
洛谷题目传送门 太弱了不会树剖,觉得LCT好写一些,就上LCT乱搞,当LCT维护双连通分量的练手题好了 正序删边是不好来维护连通性的,于是就像水管局长那样离线处理,逆序完成操作 显然,每个点可以代表一 ...
随机推荐
- Flask之单元测试
5.2单元测试 为什么要测试? Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段].其中测试阶段通过人工或自动来运行测试某个系统的功能.目的是检验其是否满足需求,并得出 ...
- Maven+Mybatis+Spring+SpringMVC实现分页查询
转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...
- Halcon学习之三:有关图像通道的函数
黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像.下面这些是与图像通道有关的函数: ...
- Burpsuite模块—-Intruder模块详解
一.简介 Burp Intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击,Burp Intruder 是高度可配置的,并被用来在广范围内进行自动化攻击.你可以使用 Burp Intr ...
- 【转】教你如何实现linux和W…
原文地址:[转]教你如何实现linux和Windows之间的文件共享,samba的安装与配置作者:铅笔小蜡 本人在虚拟机下装fedora13,已经实现. 1. 首先检查os是否安装好了samba. [ ...
- Dubbo+zookeeper应用的入门案例
前提:Linux安装zookeeper Dubbo管理中心部署 简单案例的项目结构: 1,demo_parent的pom.xml,用来统一管理依赖 <?xml version="1. ...
- Leetcode:Task Scheduler分析和实现
题目大意:提供k个任务,这些任务没有依赖关系(即可以任意调度).CPU完成一个任务需要耗时一个时间片段,当执行完一个任务后,相同的任务必须在n个时间片段才能得以执行.请问CPU通过调度最快能在多少时间 ...
- 09-nginx Rewrite语法详解
和location类似,也是要负责URL解析的. rewrite 重写 nginx的配置非常多,nginx的第三方模块也非常非常多.不可能讲每一种模块的配置办法.通常碰到一个nginx的新问题你想怎 ...
- Linux日志文件分析
---恢复内容开始--- 日志保存位置 默认 var/log目录下 主要日志文件 内核及公共消息日志:message 计划任务日志:cron 系统殷桃日志:demsg 邮件系统日志:maillog 用 ...
- VBox 安装 Ubuntu Server 的那些坑,键盘乱码、网卡互连、共享目录等
1.更新,相信大家都是有强迫症的 sudo apt-get update sudo apt-get upgrade 出现错误:Could not open lock file /var/lib/dpk ...