去年年底我参加了华为面向公众举办的算法大赛,我报名的时候刚好35期还有大概1个多月结束,于是就报名参加了。我下载了题目要求
不过在代码测试的过程中,我发现华为的判题器有问题。其实也不止是我,大家都发现了。明明题目要求是最短环基路径,排行榜是反的。不过35期判题器现在是真的改了,我的分数确实有了大幅度的提升,因为我在前天半夜用华为35期的判题器测了两遍,分数只有七十万,一开始我以为是判题器对程序运行内存有严格限制,我还在华为的选手交流群里面说了,不过我在第二次优化以后又测了一遍,发现我用内存占用已经降了一半的程序又测了一遍,还是70万,我写的算法不怎么借助DFS补环,所以相同的文件,用时基本一致,结果也差不多,两次内存占用不同,结果一致,基本已经排除了我这边的问题。
最大的可能就是华为那边测评文件只有这么多,我第二天还在选手交流群里面吐槽了一下,让我没想到的是,半个小时以后,论坛发了公告,说35期的判题器改了,我试了一下,确实是改了,我的评测分暴涨到了580万。他具体是怎么改的呢,他把 评测文件的最大边数加大了三倍,如果你的程序原来的文件就没有完整的跑完,分数确实没变化,或者dfs补环补的太多,分数基本和之前一样。
华为这么改判题期,不重算分数,不检测环长,只是加大了评测文件总量,是让你有机会跑的短环也能进评测下限。我上传的代码用的流式输入,能从内存峰值反向算边数多少,我今天发的代码,能跑到5800000分,代表他至少被喂了60万条边的量。没改以前只有20万不到。
这么改是为了确保找的都是短环,只要数量够多,累计也能达到基准线290万,这样,不会漏掉华为真正想要的最小环基,又能合理的利用规则让他永远也达不到21名以前,华为真够绝的