作为一只2=狗能继续在这里做题还是很开心的。
T1:给定一颗有点权的树,每个树上的节点最多能走到lim[u]次,求一条路径,使路径上的点权和最大,每个节点上的点权如果走了多次只能算一次。还要求方案是否唯一。
第一眼:SPFA 的松弛次数限制?(因为树的条件只在input里面)
第二眼:我擦第一问这不是原题么。快乐排序。绝逼有很多人要写成n2 logn。
第三眼:我擦第二问日了狗了。
题解:每个点只能取lim[u]-1个子树。因为每个子树只取1次或不取,考虑树形DP,dp[u]=dp[v1]+dp[v2]+...(加lim[u]-1)个,是排序后最大的。因为不一定要去满lim[u]-1个,如果负数就不走。
判多解:
1.儿子不唯一老子不唯一。
2.取得最后一个和不取的第一个dp值相等就不唯一。
3.取得里面有0就不唯一。(考试时死在这里。)
T2.真的不想说什么。唯一的贡献就是让我学会了矩阵哈希的正确姿势。
for i:=1 to n do
T3.定义题。做法请看题目。
删除假节点并连边:先按输入构图并统计每个点的度数 找一个度不为2的点做一遍dfs
if d[v]=2 f[find(u)]=f[find(v)]
做完之后重连所有f[x[i]]<>f[y[i]]的边
同构:
哈希,将点上的哈希初值都=1,对于点u,取与u相连的点权V并排序,随意哈希作为新的哈希值。迭代10000000000000000000000000000000次。最后只需判断哈希值是否相等。
2015年11月25日 02:17
%%%学神毛爷爷
2015年11月25日 02:17
%%%双国一叶爷爷