摘要:
提炼:tarjan环缩成点,建0虚根,跑树形DP,最难的是看出可能有n个点n条边然后缩点,n个点n条边可能不只有一个环 n个点n条边->基环树: 基环树,也是环套树,简单地讲就是树上在加一条边。 既然成环就必定要么全选要么全不选,直接缩成一个点即可。 我的错误: 1.第二次建图时跑的第一次的邻接表 阅读全文
摘要:
提取:等式转换,桶,倍增lca 对于(x,y)的一次提问,我们规定lca为(x,y)的lca d为深度,w为点出现观察员的时间 那么对于(x,lca)这段路径上的点i,此次提问能作出贡献的等式是 d[x]-d[i]=w[i] ->d[x]=w[i]+d[i] 对于(lca,y)这段路径上的点i,此次 阅读全文
摘要:
一上来这个专题就死磕了这道题一上午,然后发现 类似二分图?2h 样例都过不去 类似状压?1h 过样例了,WA 0 类似暴搜?10min AC 然而正解是欧拉回路 欧拉回路: 如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。如果一个回路是欧拉路径,则称为欧拉回路( 阅读全文
摘要:
提炼:tarjan判环,dfs建树,倍增lca,预处理环两点间距离 我犯的错误: 1.基环树不只有一棵,可以有很多 2.自环不能将其忽略,(对于我的算法)应该将其特殊考虑在算法内 3.代码一定要简洁有力,不能让自己调都恶心 Code 数组含义: que[N]队列,in_que[N]tarjan判是否 阅读全文
摘要:
本题需要一定的思考量。 对于位于(x,y)的一黑色,无论如何换,它的相对位置总不会发生变化,也就是不会有两个(x,y)位置的黑色 那么如果我们想让对角线上布满黑色,就可以将题目转化为 判断是否有n个满足横纵坐标互不相同的黑色 二分图匹配即可。 Code #include<cstdio> #inclu 阅读全文
摘要:
没什么的,看到限制想想拓扑就行。 拓扑有两种形式(我接触的): 1.求字典序最小:建正图,找最小的进行更新,正序输出。 2.求编号最小:建反图,找最大的进行更新,倒序输出。 本题是第二种情况。 Code #include<cstdio> #include<cstring> #include<queu 阅读全文