630中文网

630中文网>夜莺与玫瑰 百度百科 > 5060(第18页)

5060(第18页)

她与外界的一切联系,几乎都被切断了。

程家必定是知道她失踪的,姜新雪本就想把她这个拖油瓶扔回老家,她被叶建国抓走,姜新雪只需要待在宅子里不出来,就可以永远远离这个人厌恶的丈夫。

在叶建国外出赌博的白天,会把她反锁在家里,为了防止她逃跑,还特意加固了门窗。

她听不到任何来自外界的声音,闭上眼,脑海里尽可能去回忆那些还残留在脑子里的知识。

她担心,时间一久,脑子就生锈了。

程明笃还在等她交出安身立命的答卷,外婆还在梦里,让她跑到有光的地方去。

*

开春,葡萄牙,里斯本。ICPC全球总决赛现场。

如同体育馆般的竞赛大厅里,死一般的寂静,巨大的电子屏幕上,倒计时正一秒一秒地归零。

空气中,只有数百台电脑主机散热风扇发出的、低沉的嗡鸣,以及键盘被以惊人速度敲击时,那密集如暴雨般的“哒哒”声。

来自全球各大赛区的140支顶尖队伍,每队三人,正围绕着唯一的一台电脑,进行着长达五个小时的、极限的脑力马拉松。

比赛,已进入最后一个小时。

现场巨大的电子积分榜,已经变成了灰色——封榜。

这是ICPC最残酷也最刺激的规则,最后一小时,所有队伍的解题情况都不再对外公布,最终的胜负,将成为一个悬念,直到颁奖典礼才会被揭晓。

程明笃的队伍,在封榜前,与另外几支来自世界顶级名校的队伍,以9道题的成绩,暂时并列第一。

而此刻,所有人的目光,都聚焦在了题板上那道依旧是灰色的、代表着无人解出的“J题”上——那是一道极其复杂的计算几何题。

(解题过程可选择跳过,不影响情节。)

题目背景:在一个二维平面上,分布着N个互不重叠的、由简单多边形代表的“居住区”(N可以高达10万)。现在,某科技公司计划发射M颗“通讯卫星”(M也可以高达10万),每颗卫星的信号覆盖范围都是一个完美的圆形。

题目要求:给出所有“居住区”的顶点坐标和M颗卫星的坐标及其信号半径。要求程序能够快速回答一个问题:对于每一颗卫星,它的信号完整覆盖了多少个“居住区”?

N和M都高达10万。如果采用最笨的办法——对于每一颗卫星,都去遍历所有N个居住区,并进行一次复杂的“完整覆盖”判定,那么总计算量将是M*N(即10万*10万=100亿次)。

竞赛计算机的单秒处理能力约1亿次,所以计算机处理时间是100秒,但是这时间远远超过了ICPC题目通常给出的1-2秒的时间限制,而且这种解法没有技术含量,丢失了竞赛的意义。这个解法提交上去,得到的结果一定是“超时”(TimeLimitExceeded,简称TLE),即解答失败。

这一道题的难点不在数学思想,而是如何在计算机的能力内在短时间内解决大规模数据,这只能从算法的角度去优化,在有限的计算机运算能力之下,高效完成任务。

程明笃的队友,现在都停下了手中的动作。

因为常规解法动辄需要上千代码量,这不是体力竞赛,必须要确定思路再行动才更加有效。

“首先不可能走时间复杂度这么高的方法,远远超时。”负责变成的队友神情有些焦灼,但是他们队伍呈现的状态还是较为稳定的。

程明笃作为队长,更是三人中最为平静的,他靠在椅背上,闭上了眼睛,手指在桌面上,无意识地、有节奏地轻轻敲击着。

那张清隽的脸上,没有丝毫的紧张,只有一种近乎冷酷的、绝对的专注。他仿佛已经抽离了这个嘈杂的赛场,进入了一个只有纯粹的算法世界。

突然,程明笃敲击的手指停住了。他睁开眼,那双总是深邃沉静的眼眸里,在那一瞬间,闪过了一道洞悉一切的、令人心悸的璀璨光芒。

他直接拿起白板笔,在旁边的小白板上,以一种快得惊人的速度,画出了一系列辅助线和几何模型,构建了一个所有人都没想到的、全新的坐标系。

“我们别再纠结‘面在不在圆里’,”他的笔尖在白板上飞舞,“问题的核心,是‘最远点’。我们要做一张‘查询地图’,把整个平面预先分割,而不是等查询来了再去计算。”

他首先运用“最远点Voronoi图”的思想,为10万个“居住区”,各自生成了一张“谁离我最远”的答案地图。

他将这10万张地图叠加在一起,形成了一张包含了天文数字般信息的、极其复杂的“查询地图”。

运用“平面点定位算法”,为这张“查询地图”建立了一个查询引擎。

最后,当题目给出M颗卫星的坐标时,他们要做的,只是把每一颗卫星的坐标,一个一个地输入事先建立的“查询地图”里。

系统会瞬间告诉他,对于这颗卫星,1号居住区最远点是A,2号是B,3号是C……他们只需进行简单的距离判断,就能得出最终答案。

程明笃在白板上,用短短几十秒,清晰地勾勒出了这个堪称天马行空的、宏伟的算法框架。

他那两位同样是顶尖天才的队友,在最初的震惊过后,立刻领会了这个思路的精妙之处。

但紧接着,那个负责编码的队友,立刻指出了这个计划中最致命的、也是最现实的难题。

“思路很巧妙,但这个实现难度太高了!”他的神情凝重起来,“光是构建Voronoi图时,计算那些由垂直平分线构成的交点,就会涉及大量的浮点数运算。double的精度误差是会累积的。只要有一个交点因为精度问题偏离了哪怕只偏离10^7,整个数据结构的拓扑关系就全错了,后面的所有查询,都会是垃圾结果。这道题的测试数据,一定是用最刁钻的方式,卡着我们精度的。”

这就是计算几何竞赛中的“魔鬼”——精度问题。它像一个幽灵,能让你明明拥有了全世界最正确的思路,却仍然写不出结果可接受的代码。

然而,程明笃似乎早就料到了这个问题。他的脸上,没有露出什么意外。

他拿起白板擦,擦掉了刚才画的一个辅助圆,然后看着两位队友,用一种异常冷静的语气说道:

“我知道。所以,我们不用double。”

队友愣住了:“不用double?那怎么计算交点和距离?”

“用我之前封装过一个几何库模板,所有的坐标点,我们全部用整型(longlong)来存储。所有涉及方向判定、点在线的哪一侧、内外关系等核心的几何判断,全部用基于向量的叉积和点积来计算。这样,我们就可以在整个建图过程中,从根本上避免任何浮点数的比较,保证所有拓扑关系的正确。”

“那距离呢?”数学队友追问,“最后一步判断‘最远点’和圆心的距离,必须要开方,一定会产生浮点数。”

“对,”程明笃点头,“但那已经是我们唯一需要动用浮点数的、最后一步了,但是我们不需要真的开方,用平方来进行比较,将精度误差的风险降低。”

题目上的沟壑,

如今他们用数学来一一填平。

程明笃负责在白板上,用他那强大的空间想象力,处理最复杂的逻辑和边界情况。

请勿开启浏览器阅读模式,否则将导致章节内容缺失及无法阅读下一章。

相邻推荐:懦弱公主与刁蛮大小姐的互穿日常  我们那些错过的时光  致青春2原来你还在这里  拥抱一片蔚蓝  他们的年少想望  发癫泄露心声,全娱乐圈求我闭嘴  流光时空以你为荣  我把你留在昨天  撩月  谭先生您的管家又没电了  外室他魁梧能干  仰望星空的骑士  查某人  良人入梦  笔墨之间  绿茶加盐不加糖  寸寸念  爱你那天正下雨  三体  特工皇妃楚乔传  

已完结热门小说推荐

最新标签