1.Study
拓扑排序+简单dp,删边的同时维护数组
f[i]
(表示至少需要几学期才能学习完课程
i
)
当删除一条边
2.Bomb(HDU5934)
强连通分量
通过引爆半径判断,对所有炮仗
u,v
判断是否
u
能够引爆
我们发现对一个强连通分量,只需要引爆其中一个就能引爆其他的,所以我们肯定取代价最小的引爆,所以我们记录每个强连通分量代价最小的炮仗,对于强连通分量
i
我们有
最后我们发现其实很多炮仗不用被点燃,因为会被其他点燃的炮仗引爆,所以我们只需要求出
ans=∑pi=0imincosti
。 统计
p[i]
时,对每一条边
(u,v)
,我们只对
place[v]!=palce[u]的v的p[v]
加
1
时间复杂度为
3.Wire
二分+最小生成树
二分我们需要买的规格的线的长度
len
,只选取长度小于等于
len
的边,判断是否能构造一颗生成树,如果能则说明我们还可能去的更小,否则说明
len
取得太小
若使用Kruscal算法,只需要最开始对边排序(升序),然后只取第
1
条到限制的那条边即可,而判断是否能生成树只需要