这周复习加学习了一些图论,然后写了点动态规划和一些杂题。
最近写到了一题需要缩点,缩点本质是解决图中存在环导致难以执行一些操作如最短路之类的问题。主要由Tarjan算法实现,
当子节点v最早可以回溯到超过父节点u的时候,也就是low[v]的时候则断开这个父节点,其他节点仍然可以由他的子节点通过所以当
low[v]>=dfn[u]
时断开u,其他节点则无法通过子节点,形成断路,此时u为割点。
找出割点之后,用类似并查集的方式给整个环指定一个父亲,以后这个环就由这个父亲代表,解决了图中存在环的一些问题。虽然一般图论题不会故意出这种题,但是也算是用到次数比较多的算法了(大部分算法学完一次都没用到过...)Tarjan因为之前写过博客了就不分析代码细节了。
写了点树形dp的题,个人感觉树形dp思路比较像记忆化搜索。常规的树形dp还是不太难的。
P2015 二叉苹果树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
主要思路是讨论每个分支分出的苹果数量,细节有点多。
P2014 [CTSC1997] 选课 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
然后除了一些思维题就是一些杂题,话说上次网络赛就是卡在了表达式求值这块,刚好找到了一题练练手。227. 基本计算器 II - 力扣(LeetCode)