poj1870--Bee Breeding(模拟)
题目链接:点击打开链接
题目大意:给出一个蜂窝,也就是有六边形组成,从内向外不断的循环(如图)。给出两个数的值u,v按六边形的走法,由中心向六个角走。问由u到v的的最小步数。
首先处理处每个数的坐标,让1点位(0,0)其它的点预先处理出来。
然后计算两个数的距离时,我们能够计算两个数的位置横坐标差位x。纵坐标差位y,当x < y的时候。依照斜线走,走到同样列的时候就能够直接向下走。一直到v,在向下走的时候,一步能够走坐标中的2的距离。
当x>=y的时候,能够先斜线走走到同样的行。然后横正走,一直找到v,在横着走的时候,一次仅仅能走一个坐标。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std ;
struct point{
int x , y ;
}p , q , a[10010] ;
int s[6][2] = { {-1,-1},{-1,1},{0,2},{1,1},{1,-1},{0,-2} } ;
void init() {
a[1].x = a[1].y = 0 ;
int k , i , j , cnt = 1 ;
for(k = 2 ; cnt < 10000 ; k++) {
p.x = a[cnt].x ;
p.y = a[cnt].y-2 ;
a[++cnt] = p ;
for(i = 0 ; i < 6 ; i++) {
for(j = 0 ; j < k-1 ; j++) {
if( i == 0 && j == k-2 ) continue ;
p.x += s[i][0] ;
p.y += s[i][1] ;
a[++cnt] = p ;
if( cnt == 10000 ) break ;
}
if( cnt == 10000 ) break ;
}
}
}
int main() {
init() ;
int u , v , x , y , ans ;
while( scanf("%d %d", &u, &v) && u+v ) {
x = abs(a[u].x-a[v].x) ;
y = abs(a[u].y-a[v].y) ;
ans = 0 ;
if( x < y ) {
ans = x + (y-x)/2 ;
}
else
ans = y + (x-y) ;
printf("The distance between cells %d and %d is %d.\n", u, v, ans ) ;
}
return 0 ;
}
poj1870--Bee Breeding(模拟)的更多相关文章
- POJ 1870 Bee Breeding(找规律)
题目链接 题意 : 给你一个蜂巢状图形,让你找出两个点之间的距离. 思路 : 在做这个题之前可以看一下2265,因为是一种题来着,规律就是我在2265里写的那样,然后就是求距离了,求距离的时候只需考虑 ...
- poj 1870 Bee Breeding
思路:首先要建立坐标,具体作法见:http://www.cnblogs.com/xin-hua/p/3237096.html 然后将得到2坐标之差x,y:如果x,y同号,则相加,否则去最大.(要取绝对 ...
- UVa 808 (建坐标系、找规律) Bee Breeding
题意: 如图,按照图中的规律给这些格子编号.给出两个格子的编号,求从一个格子到另一个格子的最少步数.(一步只能穿过有有公共边的格子) 分析: 根据高中数学知识,选任意两个不共线的向量,就能表示平面上所 ...
- UVA 808 Bee Breeding (坐标法)
https://vjudge.net/problem/UVA-808 #include<cmath> #include<cstdio> #include<algorith ...
- UVA - 808 Bee Breeding (建立坐标系&找规律)
题目: 输入两个格子的编号a和b(a,b≤10000),求最短距离.例如,19和30的距离为5(一条最短路是19-7-6-5-15-30). 思路: 如图建立坐标系,然后看两个点的向量如果位于二四象限 ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- 转载 ACM训练计划
leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...
随机推荐
- python上的数据库sqlite3——插入多行数据
学校课程上的一个知识点,一个简单的课后习题:一劳永逸实现多行数据的插入(应该是这个意思,老师也没讲清楚).直接上代码了没啥好讲的,我感觉这个思路好捞. import sqlite3 con = sql ...
- 安装tesserocr的步骤和报错RuntimeError: Failed to init API, possibly an invalid tessdata path解决办法
1,首先下载合适的tesseract-ocr的版本 2,然后安装到这一步注意要勾选这一项来安装OCR识别支持的语言包,这样OCR就可以识别多国语言,然后就可以一直点击下一步完成安装. 3,安装tess ...
- stm32L011F3——串口实例
/* STM32L0xx HAL library initialization: - Configure the Flash prefetch, Flash preread and Buffer ca ...
- 算法学习记录-图——最小路径之Floyd算法
floyd算法: 解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包. 设为从到的只以集合中的节点为中间节点的最短路径的长度. 若最短路径经过 ...
- Java类方法 类变量
类变量就是静态变量,类方法就是静态方法. 在理解类变量.类方法之前先看一段代码: class Person{ int age ; String name; static int totalFee; p ...
- BZOJ3295 动态逆序对(树状数组套线段树)
[Cqoi2011]动态逆序对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6058 Solved: 2117[Submit][Status][D ...
- Bzoj2007 [Noi2010]海拔(平面图最短路)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2742 Solved: 1318[Submit][Status] ...
- vue项目实战, webpack 配置流程记录
vue项目实战记录,地址在这 购物车单界面 npm install npm run dev 跑起来可以看到界面效果 这里简单记录一下webpack的编译流程 入口 package.json " ...
- Vxlan简介
1.为什么需要Vxlan 1.什么是VXLAN VXLAN(Virtual eXtensible LAN可扩展虚拟局域网),是一种mac in UDP技术.传统的二层帧被封装到了UDP的报文中,通过U ...
- Spring入门之setter DI注入
1.新建Java项目导入依赖jar包,参考前一章 2.以不同文件格式输出为例 3.定义接口IOutputGenerator.java package com.spring.output; public ...