Process

今天应该是有史以来考得最好的一次,希望最后这10天能继续保持这个状态,会做的题不写挂,没思路的把暴力分拿满,NOIP一等应该没问题。 开考后将近40min都在想第一题,知道是要二分但是时间复杂度感觉会挂,加上时间过了这么久就先写了个60分的暴力二分(其实和正解已经差不多了)。 然后去看第二题,看着数据范围这么小感觉就是搜索题,但是不会迭代加深搜索,于是打了个感觉上有20-30分的暴力。 仔细看了数据范围后发现N = 8时最坏的情况我的暴力要跑2s,突然特别虚,于是默默地打了个表(总共有40320种情况我只打了前2000种情况,其他的还是按暴力跑) 结果居然过了N = 8的情况的所有点(可能是数据太水,没卡掉。。。)第三题不会做,打了30分暴力走人。 最后剩30min的时候听说机房其他人都写了第一题正解,于是跑过去想第一题,忽然觉得自己就是个傻逼,只要在之前的暴力上再搞一次二分就能过了。 最后10min匆匆忙忙打完,拍了下大样例好像没问题就交了。

Score

100 + 36 + 30 = 166 Rank 15

Problems

pack[DONE]

对于每一个询问,我们先二分能够买的最大的商品,再二分能够往后选择的最长的区间的右端点。这样做的话,每次可以将询问的值减半,因此总共时间复杂度为O(Mlog2)O(M log ^ 2)

sequence[DONE]

迭代加深搜索 我们可以发现将(1,i)翻转后事实上只会改变一个相邻数对:(i,i + 1),因此对于每个状态求出相邻数对相差大于1的数量,而剩余步数一定要大于这个值。加上这个剪枝就能过了。 只是时间复杂度比较玄学

absurdity[TODO]

先不管它