poj1778
在一个 8*8 的棋盘里有一个国王和一些骑士,我们要把他们送到同一顶点上去。 国王能
够选择一名骑士作为坐骑,而与骑士一起行动(相当于一个骑士),同一位置, 同一时刻可
以有多个骑士。问最少走的步数。 骑士的行动方式如下图所示。

输入格式:
仅有一行,包含一个字母和数字间隔的字符串,先字母再数字,字母仅可能是大写的 A
到 H,数字只可能是 1 到 8,描述国王和骑士的坐标位置,第一个是国王的坐标,后面都是
骑士的坐标,显然字母是列号,数字是行号。
输出格式:
仅有一个数,表示题目要求的最少步数。
样例输入: D4A3A8H1H8
样例输出: 10
数据范围:字符串的长度不会超过 128。
爆搜
枚举64个相遇点
再枚举64个国王JBSM的点
#include<iostream>
#include<cstring>
#include<cmath>
#define MN 64
#define MV 100000
#define min(a,b) a<=b?a:b
#define max(a,b) a>=b?a:b
using namespace std;
int dir[][]={{-,-},{-,-},{-,},{-,},{,-},{,-},{,},{,}};
int f[][MN+][MN+],kn[MN+][],n=,t[MN+];
bool lim(int x, int y)
{
return x>= && x< && y>= && y<;
}
void csh()
{
int i,j,k,t1,t2,p1,p2;
for (i=;i<MN;i++) for (j=;j<MN;j++)
{
if (i==j) f[][i][j]=f[][i][j]=;
else f[][i][j]=f[][i][j]=MV;
}
for (i=;i<;i++) for (j=;j<;j++) for (k=;k<;k++)
{
t1=i+dir[k][];t2=j+dir[k][];
if (lim(t1,t2))
{
p1=i*+j;p2=t1*+t2;
f[][p1][p2]=f[][p1][p2]=;
}
}
}
void floyd()
{
int i,j,k;
for (k=;k<MN;k++) for (i=;i<MN;i++) for (j=;j<MN;j++)
{
f[][i][j]=min(f[][i][k]+f[][k][j],f[][i][j]);
f[][i][j]=min(f[][i][k]+f[][k][j],f[][i][j]);
}
}
int main()
{
int i,j,k,D,d1,d2,x,y,ans,king,s;
char C[];csh();floyd();
while (scanf("%s",C)!=EOF)
{
n=(strlen(C)-)/;ans=MV;
if (n==) {cout<<;continue;}
king=(C[]-'A')+(C[]-'')*;
for (i=,j=;i<n;i++,j+=) t[i]=(C[j]-'A')+(C[j+]-'')*;
for (i=;i<MN;i++)
{
s=;
for (k=;k<n;k++) s+=f[][t[k]][i];
for (j=;j<MN;j++)
{
d1=f[][king][j];d2=MV;
for (k=;k<n;k++) d2=min(d2,f[][t[k]][j]+f[][j][i]-f[][t[k]][i]);
ans=min(ans,s+d1+d2);
}
}
cout<<ans<<endl;
}
//system("pause");
}
poj1778的更多相关文章
- poj1778 All Discs Considered
思路: 拓扑排序.贪心. 实现: #include <bits/stdc++.h> using namespace std; vector<]; int n1, n2; inline ...
随机推荐
- python操作——RabbitMQ
RabbitMQ是一个在AMQP基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue,消息队列(MQ)是一种应用程序对 ...
- python常用模块-1
一.认识模块 1.什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文 ...
- Activity的生命周期整理
Activity主要的三种状态: Running(运行):在屏幕前台(位于当前任务堆栈的顶部) Paused(暂停):失去焦点但仍然对用户可见(覆盖Activity可能是透明或未完全遮挡) Stopp ...
- Centos----本地yum源制作
本地YUM源制作 1. YUM相关概念 1.1. 什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的S ...
- Xshell访问kali配置
1.安装虚拟机VMware Workstation12 PRO 2.在虚拟机上安装kali2.0 3.查看liunx的ip地址ifconfig 4.端口 协议 (1)RDP协议(桌面协议)3389端口 ...
- 【HackerRank】QuickSort(稳定快排,空间复杂度O(n))
QuickSort In the previous challenge, you wrote a partition method to split an array into 2 sub-array ...
- 20145231《Java程序设计》课程总结
20145231 <Java程序设计>课程总结 每周读书笔记链接汇总 ● 20145231<Java程序设计>第一周学习总结 ●20145231<Java程序设计> ...
- axios拦截器/http
Interceptors //处理请求或响应之前拦截请求或响应. //添加一个请求拦截器 axios.interceptors.request.use(function (config) { //在请 ...
- poj 2488 A Knight's Journey 【骑士周游 dfs + 记忆路径】
题目地址:http://poj.org/problem?id=2488 Sample Input 3 1 1 2 3 4 3 Sample Output Scenario #1: A1 Scenari ...
- 关于IIntelliJ IDEA(2017)安装和破解
一.下载并安装, IntelliJ IDEA的官网:https://www.jetbrains.com 二.破解. 百度下载一个 JetbrainsCrack-2.6.2.jar 破解补丁.放在你的安 ...