ZOJ2855 Google Map 经纬度

题目 难理解,最后选用的方法是仿照了二分的思想方法来做的,感觉还是比较灵活的刚看到可能没什么思路,但是想到可以把图分为四个象限,所以可以用类似与二分的方法去做

总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.net/subject/3628849/

题意讲的是一个地图,输入三个值的最后一个值L,代表要把这个地图分成 4^L 份,每一次分 就是把整个地图的每一份小地图分成四份,左上的在其名字后面加上一个字母q,右上的r,左下的t,右下的s,给出两个值

 longitude and latitude

然后是两个公式把它转换成 以地图赤道为X轴经度为0的轴为Y轴的图 的 坐标,

  • x = longitude * pi / 180;
  • y = ln(tan(pi / 4 + (latitude * pi / 180) / 2))

Notes

You can use the 'log(double)' function to calculate the natural logarithm, and 'tan(double)' to calculate the tangent value. 


求坐标为X,Y 的点所在小地图的名称


先计算出X,Y的值,然后利用二分的方法 利用地图最右上角坐标  以及 地图最左下角坐标,LX,LY,RX,RY计算MIDX,MIDY,然后用X,Y进行比较,  把每一个小图分为四份可以看成四个象限,这样 比MIDX大比MIDY大的为第一象限,比MIDX小比MIDY大的为第二象限,第三第四类似,看情况然后不停的改变LX,RX,LY,RY的值 不停的查找

是不是跟二分的很类似, 这个思路挺灵活的,而且很好打,写一下记录一下,代码就不给出了  



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值