发挥较好,排第5,分数80+100+45=225
开场发现A是原题,先跳过
B很像hf集训的题目特殊二叉树,也不看
C看上去是防ak题不是很可做,也不看。滚回去看A
发现A就是去年八月A组的题目,连样例和样例解释也是一样的。怕spfa被卡,打了堆优化+dij,在考试开始时50min打完
C有60分暴力很好拿,每次枚举反转极大区间即可。写+调使用了20min。接下来使用10min检查A。写完暴力以后思考了20min,以为这道题是数据结构上的奇技淫巧,就没做,滚去写B
再次审视B,发现B要求权值,然而hf集训的题目只要求“是否可行”。于是想了一个区间dp:设f[l][r][k]表示区间[l,r]组成的树,根为k的最大价值。只能拿50分。
由于特殊二叉树(即hf集训的题目)说正解是dp套dp,昨天做的皮配也是dp套dp。于是想了很久dp套dp,无果。只能写70分暴力。
在考试前50min想到B的一个性质:树无论怎么换根,都符合条件,只是价值不一样。于是就不用存树的根,状态可以减少一维。只需要设f1[l][r]表示[l,r]是父亲的右儿子,f2[l][r]表示[l,r]是父亲的左儿子即可。
于是写了B的二维dp。调了30余min,终于在考试结束13分钟时调出,完成绝杀。
但是我A,C都爆了一些分。A数组开小,分数-=20。C没有想到把极大区间反转不一定最优,分数-=15。
总结:考试一定要检查数组开的是否足够大。并且每一道题目,做法都要尽量能够证明正确性。