首先,这次注意了越界的问题,思路基本都成代码了,nice~
自恋结束
好,下面就是槽点密集的正文
0908模拟
T1 char数组
T2 树的dfs
T3 状态转移
算法上,T2很顺
循环同深度的点,针对每一点,遍历下一深度
也意味着走过的路满足条件后,无需顾及,不需要getclear()什么
故时间复杂度O(n)
双向边在dfs时,需要使y!=fa
dfs顺序上看,放入队列的边一定是按深度从小到大排的,不需要再次排序
在判断是否满足限制时,直接利用队列长度和深度比较,一石二鸟
选60次二选一,得出最小代价,代价相加关系,有单向影响
显而易见,状态转移方程可以达到殊途同最优归的效果
模拟时选择的dfs有了殊途,没有同归,存在大量可以提前排掉的冗余二叉树
最后与TLE相看两厌
风水轮流转,前几天说“总有一种写dfs状态转移会错的后怕”,顺利应验
缺少同状态的min判断,导致TLE
弃敲了几十分钟的f[][][][][]写dfs有几个原因:
一 转移时存在违规状态,但在dfs中可以return
优解里达不到的状态赋值inf,达到但违规的状态用if判断,很好想
二 优解最后的状态需要枚举比较
拜托,全部枚举也比dfs少哎
三 沉没成本带来的摇摆不定
用总长%10的时间敲出自己得分%90的人,凌乱个寂寞
清清白白说明白,很多小点都可以迎刃而解