这份题目也是有点迷。
浏览题目的时候,看T1似乎比较简单,估计要用巧算;而T2草草地看了几眼;T3看个版面设计就不对头,莫名想到跳跃那个难题。回头果断去磨T1。
T1是要计算在n前有多少个勾股数。由(3,4,5)特别容易让人想到数学课上老师讲的倍增关系,于是便朝着这个方面想过去。尽管这样可以很快地得出很多勾股数,却发现以一个数字开头可能会有多组的勾股数,该枚举的还是少不掉,也不能保证在某一个数就停止枚举。而前面已经用倍数关系算过的一些数,还要判断是否有算过。这种想法不仅没有减少枚举,还增加了操作的难度。
T1研究未果,转移战场到T2。我第一眼看上去,不就是一一对应的道理吗?在草稿纸上拿样例画了个图,编了一个水代码。但直觉觉得没有那么简单,不过还是先交上去水了点分。
T2暂且放了放,又看回T1。思考如果剩下一重for,剩下最后一重会最优。后来由最后一个点用分解法,如625分解为400和225,可是这样同样是要枚举的,最后编出来样例对了,暴力对拍一下发现越往后越少。没有保证到正确性。当场决定不调了。
感觉T2好像不是很稳,又看回T2,在草稿纸上画了几个样例,真举出一个反例。当时内心暗自庆幸,很快又被我调了过来,但事后证明是无用功。
比赛时间剩下一个小时左右,小心翼翼地去思考了一下T3。T3题面特别简单,只是数据范围实在是不太友善,如果把数据改小一点,分分钟是深搜基础题。感觉大概也没什么思路,打了个暴力,用最费时的方法去了一下重。想留到最后5分钟再交。
又去看了T1和T2,还是没有什么思路。
到了10点左右,比赛剩下10分钟。又去检查了一下T3的代码,手贱地改了一种自认为可以省时间的方法,高兴地交了上去,该死的是还过了一个点(注意是OI模式)
最后的成绩也是让我觉得有点不科学,奇葩的是,点开之前没有改过的代码也是满分的,这样一来,比赛时的自作聪明反倒变成了画蛇添足。T2明明自己觉得有很多没有考虑过的情况,怎么特判了一下就可以AC了呢,而且还有几个大佬70分。后来我和wyy讨论了一下我的反例,发现是我自己看错了题目,根本就不存在我想的情况,然后侥幸A掉了一题。
再看T3,全班也不知道是不是就我一个人10分,后面三个没有超时的点wr了,其他同学都是暴力得40,尴尬。我试着把第一个版本又交了一次,结果神奇的40就出现了。到现在还是百思不得其解。