摘要:
题面解题思路树的直径模板,用树形dp来求,dp[x]表示以x为端点的最大子链长度,d[x]=max(d[y]) (y是x的后继)代码#include#include#includeusing namespace std;const int MAXN = 10... 阅读全文
摘要:
题面 解题思路 因为m太大,不能直接暴力,我们考虑构图。如果(x|(1<< i))&k=0,那么一定有x&k=0,这是一个传递关系,而x|(1<< i)正是x的子集,我们将x向x|(1<< i)连边。又因为x&(~x)一定=0,所以将输入的数据向其取反连边,则可以通过这个关系构成一张图。之后用dfs 阅读全文
摘要:
题面解题思路多源bfs,设dis[i][j] 设i点能获得j货物的最小长度。以每个货物跑一次bfs,更新每个点的dis值。时间复杂度理论上是nk,我貌似写成了nk(n/k),但还是过了。代码#include#include#include#include#i... 阅读全文
摘要:
题面题目大意给定一棵树,要求划分出几条链,使这几条链交于一点。解题思路因为所有链都要交于一点,所以必须交于一个度数最多的点。这样就形成了一个菊花形。然后从这个点出发到它的子树,判断子树的度数是否小于等于2,如果不是,则不成立。代码#include#inclu... 阅读全文