因为只有三道题,5个小时,省选的模式,整体上对于我这种菜鸡时间还是比较充裕的,所以采用的是看一道题就开始码的模式,并没有全看完再去搞
因为是直接下发的文件,文件是按照音序排序的,并不是按照难度,就只能按照音序的顺序去看,但其实这就是题目的真正顺序
T1的暴力分一看就很好搞嘛,直接n^4枚举两个点,求最短距离就行,很快给码掉了,确保十分到手,没有继续深思,想着先把每道题的最基础暴力都这样搞掉再上难度吧
于是去把T2第一档分数状压了一下,码量和常数有一点大吧,但问题不大,也许是有些地方写复杂了
接着看T3,感觉第一档分和第二档分似乎都可做,但是又都没有具体的思想,感觉这道题目像是一道需要二分的题目,但我不太能找到二分要求的单调性,想到了问题可以转化为背包问题,但这是在实数领域的背包,精度又是在1e9,根本没办法把它转化为整数背包去做,没办法,先去做前面的题目了
过来继续看T1的话,第二档分明显就是要把 n 4 n^4 n4优化为 n 3 n^3 n3,这个东西我认为不难,搞一个小小的预处理即可,又顺便加了个剪枝来弥补我使用的multiset所带的log,整体上我认为这40分是到手的,至于后面的要进一步优化,枚举每个点的复杂度省不去,那就是要搞出来每个点它能到达的最近的点的位置,而我并没有想出来怎么去搞
T2的凸多边形我自己画了图模拟了一下,很快发现我只需要把横轴最大距离加上竖轴最大距离再减去重叠部分的1即为最终答案,这个结论知道了,24分就很容易到手了,但是剩下的输出方案,由于考虑到这个最大距离可能不在一条线上,没有一个明确的思路让我去码,只好放在那里
T3又思考了还是没有结果
继续磨T1,猛然间想出了一个类似于线段树的做法,线段树?log?这不刚好吗!然后就像个憨批一样码了一个线段树一样的东西去暴力查找,实际上这个东西的复杂度比 n 4 n^4 n4都高…我一度很激动的以为我可能可以A掉T1
首先T1的话就是我算了一个弱智复杂度算错了,明显我那个要把整棵线段树每个节点都跑一遍,怎么可能是log???正解的话确实是要去预处理,但其实考场上我总是在想用个数据结构带个log去搞掉(把我引到了错误的线段树上),其实没有怎么去想预处理这件事情的,总而言之其实还是对线段树的整体思想没有特别熟练的掌握,而至于这个预处理的思想,在学校集训的时候打的一场abc也遇到过类似的问题,对于一个点找最优的另一个点,当时我就在想着套log,往二分上想,结果被jsy预处理给我秒了(自闭——),所以对于这种问题,枚举第一个点必不可少,就要想办法通过预处理找出来相对于第一个点最优的第二个点,值得一提的是,数据可能还是有点水的,在我考场上打的第二档40分实际是可以拿70分的,拿的原因就是因为我写的那个剪枝,可以非常快解决稠密图的情况,更离谱的是,如果我换成数组去递推预处理一下,把log去掉,那么这道题就A了,但实际上也许是可以造出来数据卡掉这个低于 n 3 n^3 n3的算法吧,我也不确定…
T2确实性质没有推错,但是没有看到数据范围的绝对值,样例也没给负数,所以比max的时候设置的初值是0,然后就gg了,导致这道题就拿了10分。对于凸多边形的构造方案,其实有很多种吧,乱贪一下就行,但是考场上我没法证明贪心的完全正确性,就什么都没敢写也没敢去搞。另外的凹多边形可以通过对于凸多边形的归纳来得到答案,把凸多边形的边平移一下就得到了一个矩形,我们只需要把周长/2+1就是需要染黑的方块数,得到这个性质以后套到凹多边形会发现同样合适,然后照样乱贪一下就A掉了…,问题还是出在相对于数学归纳法的能力不够吧
T3就没得说了,用什么卷积什么乱七八糟的东西,昨天刚讲的,代码也没写过,考场上就没搞出来,涉及的知识点也还没补…