NOIP2023 游记及反思

发布时间 2023-11-18 20:36:44作者: British_Union

游记

进场前的同学们

image

柠檬熟了、Nitaycke、Prms_Prmt、b1t

image

zhicheng,meatherm

开题,很快啊,

第一题不就桶排,今年签到没有去年恶心啊(9:00)

第二题,观察到每个变量最后只有一个值的依靠(或者干脆定值),建图染色就好了啊,冲冲冲,9:30 就过完了样例

此时:优势在我!

第三题,发现就是区间匹配啊,转化为一个四联通的网格图走路,思考特殊性质,不会,思考 bitset 能不能艹 \(4\times 10^4\),没成功,35 pts 跑路。11:20 了,感觉比较寄

第四题,看起来我会 \(O(n^2)\) dp!我还会特殊性质 AB,那我是不是达到预期了啊,然后开始冲暴力。

写完数组,突然想到我的目的是完成挑战,开始结束一定在端点上,写个 dp 式子,发现和某个联考题很像,是可持久化李超?哦 \(ij\) 没有交错啊,那是不是单调队列啊。这个开始的价值动态更新,那扫描线掉区间右端点,加区间左端点,用线段树维护就完了。此时11:40,高兴麻了,那 300+ 是不是到 SC NOIP 队线了,开冲。

12:10 就写完了,怎么过不去样例啊?哦 \(xy\) 反了。测样例 \(2\),过不去,哦多测挂了。

然后还是过不去?为什么啊???

是不是结论假了啊?没道理啊。

…………

然后就没有然后了。

期望得分 \(100+100+35+0=235\),应该没挂分。

出考场不久就发现把相邻判成离散化后相邻了,艹艹艹!喜挂 \(100pts\) ?!我草怎么考场上被机械降智了啊!原来的 \(335pts\) 至少也是遥遥领先我们机房的,现在寄了吧。

完蛋!我被降智包围了!♿♿♿。自闭。♿♿♿。暴力有 \(56\) 分,,,

出来发现 Meatherm 挂的更严重,第二题开始就心态炸完了。Hanghang 第一题看错了,Nityacke 说他第一题 FST 了(是 \(10pts\) 还是多少?),zhicheng 再次以大众分第一(?),绷。

但是今年是 easy round 啊,是不是高二人均阿克了,高一希望比较渺茫啊。

反思:

前两道题倒是比较顺利。

第三题可能不在我目前的能力范围内,在时间充裕的时间内思考一个小时然后暴力是正确的。

最大的失误在第四题。第四题很快想出了正解,很快写完了,却没有考虑到这样的罕见的小细节;检查时,我使用了一般的检查方法,也重新思考了逻辑,感觉非常对,然后就没有发现错误。

事实上,如果我预先写好暴力,不仅至少我可以得到最低的暴力分,我应该也可以结合暴力和不算太大的样例 \(2\) 分析出错误。所以非签到题先打暴力显然是明智的选择。

赛后我发现,我犯错误的原因是这样:我在纸上写的 \(O(n^2)\) dp 方程是这样:

\[f_i=-(i+1)d+\max(g_{j-1}+c_j+jd) \]

这里 \(c_j\) 是从 \(j\) 出发到 \(i\) 的贡献,使用扫描线,\(g\) 是这一个位置不跑步打卡的最大能量。

这是正确的。再结合“一定是从区间端点开始和结束”就可以获得离散化+线段树优化 dp 的正解。但是,这一把 \(O(n^2)\) dp 方程转化为 \(O(m^2)\)(未经线段树优化)的过程只在我脑中进行和代码用线段树实践了,未在纸上清晰地展示出来:这带来一些谬误,由离散化前后的值不同引起。

新的 dp 方程应该是这样:

\[\left\{\begin{matrix} f_i=-(rev_i+1)d+\max(g_{j}+c_j+rev_jd) & (rev_j>rev_{j-1}+1)\\ f_i=-(rev_i+1)d+\max(g_{j-1}+c_j+rev_jd) & (rev_j=rev_{j-1}+1)\\ \end{matrix}\right. \]

\(rev\) 指离散化数组代指的原值。这对线段树优化的影响不大。

显然这是容易处理的,我却在脑袋里和代码里忽略了第一种情况,导致答案一直在某几个点偏小,最终也没有发现这个问题。所以,另一个教训是一定要把思路和可能想到的细节清晰地展现在纸上