2678 凌波微步(枚举)
你在一个二维空间里的(xMe,yMe)位置,你的家在(xHome,yHome)位置。每一秒钟你可以选择从你当前位置向上下左右四个方向之一移动一个单位。你现在归心似箭,觉得这么走很慢,所幸你有技能“凌波微步”,在这片二维空间中,有3对传送门,每一对传送门以(xs,ys,xt,yt)的形式给出,表示你到达(xs,ys)点就可以发动“凌波微步”技能,花费10秒钟到达(xt,yt)点,相反你也可以花费10秒钟从(xt,yt)点发动“凌波微步”技能到达(xs,ys)点。“凌波微步”技能可以无限多次发动,但只能在所给出的3对传送门之间使用。请问你回家最短用时多少秒。
输入
输入第一行4个整数,依次是xMe、yMe、xHome、yHome,表示当前你的位置和你家的位置。
接下来三行,每行描述一对传送门(xs, ys, xt, yt),含义见题面(0 <= xi, yi <= 10^9)
输出
输出仅一行,包含一个整数表示回家的最少用时
输入样例
0 0 20 20
1 1 18 20
1000 1003 1000 1004
1000 1005 1000 1006
输出样例
14
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll xs,ys,xe,ye,ans;
ll X1[3],X2[3],Y1[3],Y2[3];
int used[3];
ll dis(ll x1,ll y1,ll x2,ll y2)
{return abs(x1-x2)+abs(y1-y2);
}
void dfs(int k,ll xl,ll yl,ll sum)
{if(k==3){ans=min(ans,sum+dis(xl,yl,xe,ye));return;}dfs(k+1,xl,yl,sum);for(int i=0;i<3;i++)if(!used[i]){used[i]=1;dfs(k+1,X2[i],Y2[i],sum+dis(xl,yl,X1[i],Y1[i])+10);dfs(k+1,X1[i],Y1[i],sum+dis(xl,yl,X2[i],Y2[i])+10);used[i]=0;}
}
int main()
{cin>>xs>>ys>>xe>>ye;ans=0x3f3f3f3f;for(int i=0;i<3;i++)cin>>X1[i]>>Y1[i]>>X2[i]>>Y2[i];memset(used,0,sizeof(used));dfs(0,xs,ys,0);cout<<ans<<endl;return 0;
}
2678 凌波微步(枚举)相关推荐
- 51nod 基础题题解(全)
基础题(40): 1000 A + B 1005 大数加法 1006 最长公共子序列Lcs 1018 排序 1019 逆序数 1027 大数乘法 1046 A^B Mod C 1057 N的阶乘(大数 ...
- 【C#】枚举_结构体_数组
最近看C#视频,关于这部分,先看了一遍,又照着敲了一遍,自己敲的过程发现了一些有意思的东西. 枚举:定义一个枚举类型的变量,这个变量有很多相同类型的值.比如性别Gender这个变量可以有男和女这两个值 ...
- Go 学习笔记(7)— 常量定义、常量使用、枚举用法、iota 常量、不设置初始值常量
1. 常量定义及分类 1.1 定义 常量是指在程序运行时,不会被修改的量. 常量中的数据类型只可以是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: const identifie ...
- 1137 - Sin your life sin公式 + 枚举
http://www.ifrog.cc/acm/problem/1137 和差化积公式, 变成2 * sin((x + y) / 2) * cos((x - y) / 2) + sin(n - (x ...
- C语言程序设计 细节总结(第9章 结构体共用体枚举)
第9章 结构体.共用体.枚举 9.1 结构体 1.对于同类型结构体变量之间可以整体一次赋值 9.2 指向结构体的指针 9.2.1结构体变量的指针 1.定义格式:struct 结构体名 *结构体指针变量 ...
- java 枚举的继承_java中枚举类可以被继承吗?
java 枚举类 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: ● 枚举类继承了java.lang.Enum类,而不是默认的Object类.而 ...
- c语言枚举3位数相加等于10,C语言 联合和枚举
联合(union): 一.联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量. 联合说明和联合变量定义与结构十分相似.其形式为: union 联合名 { 数据类型 成员名; 数 ...
- Codeforces Round #359 (Div. 2) C. Robbers' watch 暴力枚举
题目链接 题意是真的烦,到最后才知道是n个m其实就是限定表的两个时区的位数,所以所当数不够填满时区的时候前边自动补零 思路:首先来说不能有重复的数字的话,小时和分钟的总位数大于7肯定不行. 7的7次方 ...
- 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)
新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ...
最新文章
- 关于java.util.LinkedHashMap cannot be cast to ......的解决办法
- JAVA面试解析(有赞二面)
- es6 日期字符串转日期_量化数据预处理-中文日期(含)转英文日期
- tensors used as indices must be long or byte tensors
- springboot数据源不正确_SpringBoot整合多数据源的巨坑!!!
- UIColor之【扩展:#FFFFFF -UIColor】
- 第12天,HTML基础
- 封装一个Array 数据 绑定 html select 方法
- MyGeneration的NHibernate代码生成模版
- 动漫风格迁移——AnimeGANv2的实现【复现】
- Linux系统编程——进程替换:exec 函数族
- Fast DDS Fast DDS主要包括以下内容DDS API、Fast DDS-Gen、RTPS Wire Protocol
- 关于kindle mobi词典解析
- asp.net 与donet(.net)的区别
- 科幻文学入门指南(专业读者分享)
- 信息安全-安全专业名称|CVE|RCE|POC|VUL|0DAY
- 分享:制作属于自己的O'REILLY“动物书”封面
- 关于父组件向子组件传值
- E01 -- CSS样式中 报错 { expectedcss(css-lcurlyexpected)
- 软件创新实验室:微信小程序开发——账号注册和APPID申请