摘要: 对于树边直接转移,然后按照套路拆环,在环上做一个单调队列 DP. 一种方案虽然在一个换上可能算不了,但是一定可以在另一个环上计算到. 仙人掌上 DP 的套路就是遇到树边就按照树上做,遇到环就拆环,做一个环形 DP. code: #include <bits/stdc++.h> #define N 2 阅读全文
posted @ 2020-03-29 23:40 EM-LGH 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 第一道仙人掌题. 由于仙人掌中每条边最多只属于一个环,所以两个在环中的点的最短距离是好算的. code: #include <bits/stdc++.h> #define N 200006 #define setIO(s) freopen(s".in","r",stdin) using namesp 阅读全文
posted @ 2020-03-29 11:58 EM-LGH 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 对于树的情况是简单的. 我们 DFS 这颗仙人掌,对于树边正常转移就行. 然后对于环,我们把环拿出来,然后强制讨论端点选/不选再跑一遍 DP 就行. code: #include <bits/stdc++.h> #define N 200006 #define setIO(s) freopen(s" 阅读全文
posted @ 2020-03-29 11:56 EM-LGH 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 开始的时候没有借助圆方树去思考,思路非常混乱,想了很长时间后冷静下来发现这题不就是分类讨论简单题嘛... 题目不难,分两种情况讨论: 设当前点为中间点(圆点) 起点从一个儿子的子树进入到中间点后进入到另一个儿子的子树. 起点从一个儿子的子树进入到中间点后仍然回到该儿子子树中(相当于上一条的子问题) 阅读全文
posted @ 2020-03-29 01:07 EM-LGH 阅读(163) 评论(0) 推荐(0) 编辑