UVa 808 (建坐标系、找规律) Bee Breeding
题意:
如图,按照图中的规律给这些格子编号。给出两个格子的编号,求从一个格子到另一个格子的最少步数。(一步只能穿过有有公共边的格子)
分析:
根据高中数学知识,选任意两个不共线的向量,就能表示平面上所有点。
像这样建立坐标系,根据图中的规律算出所有点的坐标。
推理也好,找找规律也好,不难发现
- 第一、三象限的点(x, y)到原点的距离为 |x| + |y|
- 第二、四象限的点(x, y)到原点的距离为 max{|x|, |y|}
递推点的坐标的时候也是比较注意细节的,否则很容易出错。
1 #include <cstdio> 2 #include <cmath> 3 #include <algorithm> 4 using namespace std; 5 const int maxn = 10000; 6 7 struct Point 8 { 9 int x, y; 10 Point(int x=0, int y=0):x(x), y(y) {} 11 }p[maxn + 330]; 12 13 int dx[] = {-1, -1, 0 , 1 , 1 , 0 }; //六个方向 14 int dy[] = {0 , 1 , 1 , 0 , -1, -1}; 15 int pos; 16 17 void cal(int dir, int l) //按照dir方向递推l个格子的坐标 18 { 19 pos++; 20 while(l--) 21 { 22 p[pos] = Point(p[pos-1].x+dx[dir], p[pos-1].y+dy[dir]); 23 pos++; 24 } 25 pos--; 26 } 27 28 void Init() 29 { 30 p[2] = Point(1, -1); 31 pos = 2; 32 for(int l = 1; l <= 58; ++l) 33 { 34 for(int dir = 0; dir < 4; ++dir) 35 cal(dir, l); 36 cal(4, l+1); 37 cal(5, l); 38 } 39 } 40 41 int main() 42 { 43 Init(); 44 45 int n, m; 46 while(scanf("%d%d", &n, &m) == 2 && n) 47 { 48 int x = p[n].x - p[m].x; 49 int y = p[n].y - p[m].y; 50 int ans; 51 if((x<0&&y>0) || (x>0&&y<0)) ans = max(abs(x), abs(y)); 52 else ans = abs(x+y); 53 54 printf("The distance between cells %d and %d is %d.\n", n, m, ans); 55 } 56 57 return 0; 58 }
代码君
转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4202527.html
UVa 808 (建坐标系、找规律) Bee Breeding相关推荐
- UVA - 1647 Computer Transformation(计算机变换)(找规律)
题意:初始串为一个1,每一步会将每个0改成10,每个1改成01,因此1会依次变成01,1001,01101001,--输入n(n<=1000),统计n步之后得到的串中,"00" ...
- UVA - 12627 - Erratic Expansion(找规律递归)
递归找规律即可,用前b行减去前a-1行的红气球个数求解,细节见代码 #include<cstdio> #include<cstring> #include<cstdlib ...
- 找规律万能公式_数列找规律万能公式.doc
数列找规律公式 数列找规律用拉格朗日插值.拉格朗日"提出"了这种方法,所谓的插值,就是"插""值",就是指找出一个通过给出离散数据点的函数. ...
- 找规律万能公式_万能公式:找规律什么的都弱爆了 | 死理性派小组 | 果壳网 科技有意思...
小学的奥数题中,最令人头疼的题型无非是找规律了,各种毫无规律的数列.你可以试试下面的例子: *1,4,14,53,90,268,977,1586 *1 ,3, 7, 8, 0, 5, 9, 2, 4, ...
- 思维、找规律题目汇总
转自:http://hi.baidu.com/liuzhe/blog/item/d2dc0fd10bf1eadb572c843d.html 感想: 1.还是数学有前途 2.猜想很重要 3.暴力打表可以 ...
- 2018.09.01 poj3071Football(概率dp+二进制找规律)
传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...
- 点分治问题 ----------- P3727 曼哈顿计划E[点分治+博弈SG函数打表找规律]
题目链接 解题思路: 1.首先对于每个操作我们实际上是一个博弈问题 对于k=1的操作就是很基础的NIM游戏就是找到一条链的异或和为0 对于k=2的操作通过达打表找规律: 如果s是奇数那么偶数的SG函数 ...
- 数学/找规律/sgu 118 Digital root
题意 定义f(n)为n各位数字之和,如果n是各位数,则n个数根是f(n),否则为f(n)的数根 现在给出n个Ai,求出A1*A2*-*AN + A1*A2*-*AN-1 + - + A1*A2 + A ...
- HDU 5703 Desert 水题 找规律
HDU 5703 Desert 水题 找规律 已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现 ...
最新文章
- 鸿蒙系统方舟运行时,方舟编译器立功!第三方App已经落地,距离鸿蒙系统还会远吗?...
- 除了数据,生活中还有这些......
- 手把手教你使用 1D 卷积和 LSTM 混合模型做 EEG 信号识别
- 死磕Java并发:J.U.C之并发工具类:CyclicBarrier
- linux fedora35更改开机默认等待时间timeout
- ASP.NET Core快速入门(第5章:认证与授权)--学习笔记
- No identities are available for signing 的解决办法
- 鸿蒙系统联合,跨界联合 华为鸿蒙系统赋能厨电业
- Don't stop pretraining,继续预训练!
- 【a202】【9208】输油管道问题
- 华硕 tuf b360 efi_1935MHz凶猛上天!ROG STRIX RTX 3070图赏-华硕,RTX 3070,图赏 ——快科技(驱动之家旗下媒体)-...
- 使用面向对象方法实现猜拳游戏(Java)
- cp:略过目录:”文件名“
- \n和endl的区别
- 基础工具类Joiner的使用
- 端对端加密通讯协议Signal protocol 学习(转)
- 考研数学公式Day2:对1/(a+bcosx)的积分
- 探讨未来网站发展趋势
- SegeX Progress:MFC通用进度条
- html hdr文件,hdra和hdr的区别是什么
热门文章
- 数据库中Select For update语句的解析
- 使用git pull时,项目没有更新?
- 《自己动手写操作系统》读书笔记——初识保护模式
- DHCP之二 DHCP的中继代理
- 百度百科做起来也不难
- 在VB.NET中初始化网格实现方法知识讲解
- c++《VS2008 快捷键大全》
- 我看ITIL在中国(六):如何建设有中国特色的IT运维管理平台【三】
- 系统相机裁剪比例_从照相到摄影你只差这5个技巧!人像裁剪这4大原则你一定要了解...
- glassfish启动后不能进入部署页面_Flink on Yarn三部曲之二:部署和设置