uva 808 - Bee Breeding(坐标问题)

题目链接:uva 808 - Bee Breeding

题目大意:按照题目中图片的方式将所有的正六边形标上序号,然后给出两个序号,问这两六边形最短要走多少步。

解题思路:将图中的坐标系进行修改

这样,每个位置和周围(除了左上角和右下角)位置相邻,只需要一步。

并且建坐标的方法可以按照6条边的方式

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>

using namespace std;
struct point {
	int x, y;
	point() {}

	point(int x, int y) {
		this->x = x;
		this->y = y;
	}

	point operator - (const point& c) {
		return point(x-c.x, y-c.y);
	}
};

point pos (int n) {
	if (n == 1) return point(0, 0);
	int r;	

	for (r = 1, n--; n > r * 6; r++)
		n -= r * 6;

	if (n <= r) return point(r-n, -n);
	if (n <= 2*r) return point(r-n, -r);
	if (n <= 3*r) return point(-r, n-3*r);
	if (n <= 4*r) return point(n-4*r, n-3*r);
	if (n <= 5*r) return point(n-4*r, r);
	return point(r, 6*r-n);
}

int solve (int n, int m) {
	point d = pos(n) - pos(m);

	if (d.x * d.y >= 0)
		return max(abs(d.x), abs(d.y));
	else
		return abs(d.x) + abs(d.y);
}

int main () {
	int n, m;
	while (scanf("%d%d", &n, &m) == 2 && n + m) {
		printf("The distance between cells %d and %d is %d.\n", n, m, solve(n, m));
	}
	return 0;
}

uva 808 - Bee Breeding(坐标问题),码迷,mamicode.com

时间: 2024-12-24 07:02:59

uva 808 - Bee Breeding(坐标问题)的相关文章

UVA - 808 Bee Breeding (建立坐标系&amp;找规律)

题目: 输入两个格子的编号a和b(a,b≤10000),求最短距离.例如,19和30的距离为5(一条最短路是19-7-6-5-15-30). 思路: 如图建立坐标系,然后看两个点的向量如果位于二四象限答案为向量坐标绝对值的和,向量位于一三象限答案为向量坐标绝对值的最大值. 看网上的博客的思路--(菜是原罪) 难点是建立坐标系. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1000000000 #define F

POJ 1870 Bee Breeding

这种烂题我再也不想见到了!! 比模拟题还讨厌!! 题目大意: 根据题目给出的各个数的位置,求某两个数之间的位置. 解题思路: 由给出的位置可以找到一个规律,二维的六个象限的坐标系,计算坐标然后计算距离就行. 下面是代码: #include <set> #include <map> #include <queue> #include <math.h> #include <vector> #include <string> #includ

POJ 1870 Bee Breeding(找规律)

题目链接 题意 : 给你一个蜂巢状图形,让你找出两个点之间的距离. 思路 : 在做这个题之前可以看一下2265,因为是一种题来着,规律就是我在2265里写的那样,然后就是求距离了,求距离的时候只需考虑两个点的坐标差值(x,y),把坐标差值分成四个项限,x>0且y>0,或x<0且y<0为abs(x+y),其他情况则是max(abs(x),abs(y)).. 1 #include <cstdio> 2 #include <cstring> 3 #include

UVa 808 (建坐标系、找规律) Bee Breeding

题意: 如图,按照图中的规律给这些格子编号.给出两个格子的编号,求从一个格子到另一个格子的最少步数.(一步只能穿过有有公共边的格子) 分析: 根据高中数学知识,选任意两个不共线的向量,就能表示平面上所有点. 像这样建立坐标系,根据图中的规律算出所有点的坐标. 推理也好,找找规律也好,不难发现 第一.三象限的点(x, y)到原点的距离为 |x| + |y| 第二.四象限的点(x, y)到原点的距离为 max{|x|, |y|} 递推点的坐标的时候也是比较注意细节的,否则很容易出错. 1 #incl

poj1870 Bee Breeding

题意:首先给的图不是很清楚  为了好说明  用下图示范 如图  这是一个蜂窝  1在中间 然后依次旋转扩散开来 (每个数字代表一个小孔)  然后给你两个数字 让你求出这两孔之间的最小距离: 分析: 首先建个坐标系(二维的)   把每个孔都坐标化  如图 PS:这个横纵坐标轴可以随意 设置 接下来求小孔的坐标, 由第一个图我们可以知道第一个小孔周围是6个孔 再往外是12,24... 所以我们可以根据等差求和公式求出 所求小孔在第几圈 ,并且由第二个图我们可以发现第p圈的最后一个孔的坐标为(p,0)

UVa808 - Bee Breeding(坐标法)

题意:给定图中蜂窝两点,求最短距离 思路:建坐标系,然后根据图中走的顺序把每个点的坐标求出来,然后利用坐标去求最小距离 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> const int N = 20005; const int d[5][2]={{-1,1},{0,2},{1,1},{1,-1},{0,-2}}; struct Point{ int x,y;

UVa 11000 - Bee

题目:印度蜜蜂,每年每只雄蜂产下一只雌蜂和一只雄蜂,每只雌蜂产下一只雄蜂,然后就死去: 现在发现了一只不会死的雌蜂,问以她为起始点,第N年有多少雄蜂和一共多少蜜蜂. 分析:dp,FIb数列类似物. 设第k年的雄蜂和雌蜂分别为m(k)与f(k),则有如下递推关系: ① f(k)= m(k-1)+ 1:(只有雄蜂会产下雌蜂,加上那只不死的) ② m(k)= f(k-1)+ m(k-1):(每只雄蜂和雌蜂分别产下一只雄蜂) 整理得:m(k)= m(k-1)+ m(k-2)+ 1:(①带入②) 说明:使

ACM训练方案-POJ题目分类

ACM训练方案-POJ题目分类 博客分类: 算法 ACM online Judge 中国: 浙江大学(ZJU):http://acm.zju.edu.cn/ 北京大学(PKU):http://acm.pku.edu.cn/JudgeOnline/ 杭州电子科技大学(HDU):http://acm.hdu.edu.cn/ 中国科技大学(USTC):http://acm.ustc.edu.cn/ 北京航天航空大学(BUAA)http://acm.buaa.edu.cn/oj/index.php 南京

(转载)ACM训练计划,先过一遍基础再按此拼搏吧!!!!

ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO http://ace.delos.com/usacogate 美国著名在线题库,专门为信息学竞赛选手准备 TJU http://acm.tongji.edu.cn/ 同济大学在线题库,唯一的中文题库,适合NOIP选手 ZJU http://acm.zju.edu.cn/ 浙江大学在线题库 JLU htt