第九十七章 实用主义
就在宋宸卿琢磨着优化第四题团建问题时,洛北直接视题目的陷阱于无物,横冲直撞碾压过去了。他脑海中首先浮现的想法,直接就是最优思路。

    不过就是深度优先遍历同步比较两棵树的路径,通过适当的哈

    写完,提交,然后是第五题,没有丝毫停顿。

    “小沧班上有n人,一次考试后他想统计全班人的成绩,已知第i名同学的成绩为ai,当小沧统计完前名的成绩后,他可以从1—任选k名同学,计算他们成绩的方差。小沧至少要检查多少个人的成绩,才可能让k名同学的方差小于一个给定值T?

    “”

    看着很长的一串文本和公式,但在洛北眼中,关键信息被瞬间提取出来了。

    脑内数学建模,完成。

    。式子略复杂,但是难不倒继承了大师级“做题家”全部特性的,“学者”天赋的持有者。

    很快,他得到了一个化简后的不等式。紧接着,洛北根据这个推导式,马上构造出检查方差是否满足条件的check函数。

    接下来,要做的事情就很简单了:

    先把数组的前个元素复制到新数组b里面并排序,再根据化简后的不等式来计算前缀和、前缀平方和。最后检查所选的k个成绩是否满足条件,使用二分查找,调用check()函数加速搜索————

    整个思路,行云流水,一气呵成。几十行代码就搞定了。洛北不假思索地提交第五题,直奔最后一题,因数计数。

    因数计数,是这次省赛A组的压轴题。这道题的题面很短,和数学的

    2,y2)的因数,当且仅当1y1分别是2y2的因数。他想知道有多少个有序四元组(i,j,k,I)满足(ai,aj)是(ak,al)的因数,其中i,j,k,I互不相等——”

    这是一道结合了数学推理的算法题。需要预先推导因数关系,然后枚举四元组。

    如果参赛选手的数学基础不够扎实,最容易想到的思路就是暴力求解。但强行硬算,随之而来的超高的时间复杂度0(4),按照题目给的测试用例范围,最多只能拿到3040分。

    洛北当然不会这样做。

    这道题,对他来说,思路其实依旧很清淅:因为只用计算四元组的个数,不用计算具体是哪些四元组。所以,可以直接考虑数论中的容斥原理,运用排列组合,先计算出基本因数对数,再排除重复和无效情况,就可以得到最终的结果。

    “实用主义”,恐怖如斯。在这个特性的辅助下,洛北总能灵感爆棚,直接找到那条最高效的路径。

    紧接着,就是将思路贯彻为实际了。

    思路一通,代码就如潮水般涌现。啪咔啪咔啪咔————即使是最便宜的薄膜键盘,在洛北手中,同样是飞花摘叶可杀人的码字神器。

    十五分钟后,最后一行代码完成了。洛北的手指在回车键上轻轻一敲,点下确认。

    提交。

    接下来,就交给官方后台的评分机器判断吧。