繁体
离我最远”的答案地图。
他将这10万张地图叠加在一起,形成了一张包
了天文数字般信息的、极其复杂的“查询地图”。
运用“平面
定位算法”,为这张“查询地图”建立了一个查询引擎。
最后,当题目给
颗卫星的坐标时,他们要
的,只是把每一颗卫星的坐标,一个一个地输
事先建立的“查询地图”里。
系统会瞬间告诉他,对于这颗卫星,1号居住区最远
是a,2号是b,3号是c……他们只需
行简单的距离判断,就能得
最终答案。
程明笃在白板上,用短短几十秒,清晰地勾勒
了这个堪称天
行空的、宏伟的算法框架。
他那两位同样是
尖天才的队友,在最初的震惊过后,立刻领会了这个思路的
妙之
。
但
接着,那个负责编码的队友,立刻指
了这个计划中最致命的、也是最现实的难题。
“思路很巧妙,但这个实现难度太
了!”他的神
凝重起来,“光是构建voronoi图时,计算那些由垂直平分线构成的
,就会涉及大量的浮
数运算。double的
度误差是会累积的。只要有一个
因为
度问题偏离了哪怕只偏离107,整个数据结构的拓扑关系就全错了,后面的所有查询,都会是垃圾结果。这
题的测试数据,一定是用最刁钻的方式,卡着我们
度的。”
这就是计算几何竞赛中的“
鬼”——
度问题。它像一个幽灵,能让你明明拥有了全世界最正确的思路,却仍然写不
结果可接受的代码。
然而,程明笃似乎早就料到了这个问题。他的脸上,没有
什么意外。
他拿起白板
,
掉了刚才画的一个辅助圆,然后看着两位队友,用一
异常冷静的语气说
:
“我知
。所以,我们不用double。”
队友愣住了:“不用double?那怎么计算
和距离?”
“用我之前封装过一个几何库模板,所有的坐标
,我们全
用整型(longlong)来存储。所有涉及方向判定、
在线的哪一侧、
外关系等
心的几何判断,全
用基于向量的叉积和
积来计算。这样,我们就可以在整个建图过程中,从
本上避免任何浮
数的比较,保证所有拓扑关系的正确。”
“那距离呢?”数学队友追问,“最后一步判断‘最远
’和圆心的距离,必须要开方,一定会产生浮
数。”
“对,”程明笃
,“但那已经是我们唯一需要动用浮
数的、最后一步了,但是我们不需要真的开方,用平方来
行比较,将
度误差的风险降低。”
题目上的沟壑,
如今他们用数学来一一填平。
程明笃负责在白板上,用他那
大的空间想象力,
理最复杂的逻辑和边界
况。
数学队友负责将程明笃的思路,转化为一行行严谨的数学推导,供编码的队友参考。
时间,来到最后一分钟。
“提
。”程明笃的声音此时已经掀不起一丝波澜。
对于真正能参加这场决赛的人来说,一
题得以巧妙解决,在
结果的瞬间就一直差不多知晓了。
队友
提
键。全世界的目光,都聚焦在了他们队伍的屏幕上。
Loading...
内容未加载完成,请尝试【刷新网页】or【设置-关闭小说模式】or【设置-关闭广告屏蔽】~
推荐使用【UC浏览器】or【火狐浏览器】or【百度极速版】打开并收藏网址!
收藏网址:https://www.zhuishula.net