策略总结
这次策略有明显问题。对于程序的检测没有积极性,于是挂的很惨
D1
T1,咋一看好像很水,直接按第一印象5分钟写了出来。过了样例也没想去拍,其实连思路都是错的。
T2感觉状态有点模糊,直接去T3了。
T3想出了5维状态,结果脑子抽了用记忆化搜索实现,N^5不能直接开出数组。于是用map记忆化,结果发现map太慢了。于是空间时间平衡下3维数组2维map,效果还行。如果不用记忆化搜索那么状态可以化一维为滚动数组。
结局很悲惨,0+0+90,看着一大片人都切了不算难的第一题,很难过。一定不要小看题目,要想清楚,要验证。不能懒
D2
第一题不难,40分钟左右写完拍完,极限数据也试过了。
第二题咋一看题面,似乎很复杂,但经验告诉我这种题面写两个不难的dp应该可以过。结果果然就是两个dp可以搞出答案。直接开写。写完之后发现暴力不好写,而且样例比较有强度,是没问题的,就没管了。去想T3。
T3方程推出来了,但期望有依赖关系,递推实现不了,只能解方程,居然在考场上知道要解方程,却只会手解,脑子显然短路忘了可以直接高斯消元搞个30分。到最后T3没分。
结局一般:100+50+0,原因在于我T2时间复杂度估错了,自己也没有出极限数据去测试时间过不过关。只有五十分,如果意识到了这一点,用线段树维护方程转移不难想到,在清澄上是可过的。这个悲剧告诉了我没得拍也要试下极限数据,不仅可能发现溢出,也可以看时间是否出乎自己的意料,然后进一步考虑优化。甚至想想我的D1T3能得到的90分正是因为自己不断去用极限数据去试才得到了一步步的优化,不然可能只有60分。
所以要试极限数据。
写完一题要立刻验证,各种验证,不能马马虎虎直奔下一题。
D1T1
霍尔定律,有n个点,每个点需要
ai
的度,求最少添几条边满足需求。
若
amax>Σi!=maxai
则
Ans=amax
否则
Ans=⌈Σai2⌉
D2T3
Ei=Σ(i,j)existedEjdi+1
di
指i的度。
假设终点为根,可以发现
Ei=Efai+Ci
Ci=ΣjInSubTreeOfidj
可以随便假设一个点为根,预处理出每个点到根的C的前缀和,T会变来变去,求出T和S的lca,可以求出若以T为根时lca->T的C的和
C′=Σ2(n−1)−Σibelong[T,LCA)Ci
//总度数减去以T为根它上面那部分的C即为新C
Ans=C′+Clca