预处理的方案很多,但各有利弊。
比如,在这道题中,如果使用线段树来做预处理,需要维护三个值:区间内最小值、最大值、数的个数。
这种办法有个缺点,当Hi的值很大时,有可能会内存开销过大,导致空间超限。
根据规定,程序可以使用的内存只有128兆,一旦使用的内存超出限制,则整道题0分。
为了解决这个问题,就需要进行离散化操作,平添难度。
江寒通过分析,综合比较、权衡了一番后,选择了比较保险的双向链表模拟算法。
相比线段树,双向链表不需要离散化,但是细节比较多,调试起来会稍微麻烦一点。
江寒自然不怕这点麻烦,一个是他对双向链表掌握得很好,二来……早上吃那么多东西,就是为了用在这种地方的。
只要舍得全力开动脑力,编写起这种复杂度的代码来,只是小意思。
还剩下一个半小时,时间上是完全够用的。
对输入数据进行了预处理之后,接下来就可以寻求题目要求的解答了。
这一步,可以用“倍增法”进一步提速,这样就可以保证,在很短的时间内算出答案,避免时间超限。
由于答案数字很大,这道题也要用高精度来处理一下。
但和第二题又有点不一样,这道题的精度压力,其实并没有那么离谱,完全可以尝试采用longlong(对应着vs里的int64)数据类型来解决。
如果为了万无一失或者炫技,当然也可以再次手写一个高精度算法。
但江寒经过分析、计算,认为longlong已经完全够用,就没费那个劲儿。
放在几年前,在NOIP等各种编程比赛中,longlong还是禁止使用的数据类型,但从去年开始,NOI官方终于放松了限制,明文允许使用了。
这样一来,很多难题的编程复杂度,就被大大地削减了。
编写完第三题的代码,调试通过后,江寒又设计了一些数据去检测,结果完全正确。
看看时间,还剩下半个小时。
这个时间自然也不能浪费,江寒将代码整理了一番,清理掉调试数据,注释掉不需要的输出,删除多余的文件。
最后,再跑了一遍代码,确认毫无问题后,又利用最后十分钟,复查了一遍文件夹、源代码、输入输出文件的命名,排除各种低级错误。
别说,还真让江寒查出了一个问题,第1题的输出文件名,打漏了一个字母。
应该是vigenere.out,结果打成了vigener.out。
这可不是什么小问题,如果没查出来,就是致命错误。
如果文件名弄错了,程序编得再完美,也只能爆0!
每年都有不少“大神”级别的高手,折在这种低级错误上。
好在江寒的时间非常宽裕,这才能及时发现并纠正。
不过,等到明天进行Day2比赛时,就要吸取教训了。
江寒默默地想着。
像是这样的地方,最好从题目中直接复制、粘贴过来,不要再手打……
一切梳理妥当后,时间也差不多了,还剩最后两分钟。
江寒举手示意。
监考教师走了过来:“什么事?”
“交卷。”江寒轻声回答。
顿时,刷刷刷,许多目光扫了过来。
因为机器摆放的问题,没有人可以看到别人的屏幕。
可是,能看到脸色啊。
发现江寒一脸的云淡风轻,那些人顿时就心里明镜,这只怕是一位真大神。
也只有真正的竞赛高手,才会时间充裕到这种程度,不等比赛结束铃声响起,监考教师喊停,就主动交卷。
监考教师核对了一下江寒的答题文件夹,然后就示意他可以离场了。
这就是NOIP比赛比较人性化的地方了。
比赛时间截止后,所有选手只需有秩序离场,别的什么也不用管。
监考者会负责收集答案。
当然,他们也只会在权限内进行上传操作,不会帮忙修改任何一个字母、标点符号。
然而,是人就会有失误。
万一因为答案提交环节,出现什么小问题,而导致成绩无效,选手也没地方说理去。
所以江寒对监考老师微笑致谢,却没有马上走开。
盯着他将自己的答案,成功提交到了服务器上,然后才拎着一口没喝的矿泉水,拿好自己的各种证件退场。
刚走出实验楼大门,比赛终止的铃声就响了起来。
老高迎了上来:“你个臭小子,到底还是没完全听我的话,提前了2分钟交卷,对吧?”
江寒微微一笑:“我是不想跟大家一起提交答案,给服务器增加压力。”
高俊德点了点头:“不用解释,我也是干这一行的,都明白。”
又说:“答完了就好好放松一下,不要多想,更不要和别人对答案、比成绩。那些都没用,做好自己就行了。”
江寒笑着答应了。
对答案?
不需要啊。
想要估算自己能得多少分,系统信息栏就是最好的参考。
只要数一数飘起了几次【“学以致用”积分+x.xxxx】,就能大概估算出得分区间了。
满分的把握倒也不算太大,也就八、九成的机会,但拿到270~280分是绝对没问题的。
贺纹章也在旁边,见到江寒也打了声招呼,但没有多问什么,自顾自和高老师叙旧。
江寒拧开矿泉水,刚喝了两口,朱达昌、熊磊联袂出来了。
又过了一会儿,李山河也出来了。
三个人碰头后,就聊了几句比赛的事情。
李山河一如既往的颓废,唉声叹气:“完了、完了,我这次彻底废了。”
熊磊安慰他:“一样,我也答得很不顺利……你估计能得多少分?”
李山河想了想:“第二题我做了冒泡排序,多说能得30~40分;
第三题我用了最慢的暴力搜索,60~70分的样子吧。
第一题如果一点问题都没有,倒是还好,可就怕万一。
只要随便丢一、两个校验点,我今天能拿到的分数,就无论如何也超不过200了……”
熊磊:“……”
第三题他连看都看不懂,第二题只能做出暴力搜索算法,最多20分,全指望第一题了。
运气好点,今天能拿100多分,运气不好,直接爆0。
这么弱鸡的成绩,有啥资格安慰别人200分的大佬?
朱达昌不怎么多话,有点腼腆的样子。
熊磊看了他一眼,问:“朱哥,看你的样子,应该发挥得还行?”
朱达昌苦笑了一下,说:“我本来也没指望拿奖,就是来碰运气的,结果……”
说着叹了一口气:“事实证明,我运气的确不怎么样,训练时压的题型,一个没碰上。”
熊磊沉默了。
也就是说……朱达昌的比赛成绩,可能和自己差不多,也不怎么乐观?
谁料,朱达昌又叹了口气,惆怅地说:“我一、三题,跟老李用的方法差不多,第二题倒是用了高精度,但时间实在太紧张了,只够做出单高精的除法,估计比老李强不了多少,220分上下吧。”
熊磊彻底不会说了。
这俩家伙一个拼命低调,一个拼命卖惨,原来全特么是隐藏的大佬!
一瞥眼,见江寒正在高老师身边,喝着水卖呆,于是喊了一声:“大神。”
江寒听见了,四处踅摸了一圈,却没发现有人响应,以为他在喊别人,于是继续卖呆,听贺老师和高老师高谈阔论。
“江寒大神,这边!”熊磊只好连名带姓地,又喊了一遍。
江寒这才知道,原来“大神”是自己的新外号……