题面
首先处理出每个炸弹爆炸直接能引爆的炸弹
然后用线段树完成区间加边操作
然后显然我们会考虑算出每个点能到的叶子节点数
然而我们发现并没有很好的算法能完成它
可以发现每个炸弹能直接或间接引爆的炸弹必然是一个区间
于是又考虑搞出这个区间的左右端点
然后就是常规操作:
- tarjan缩点
- 拓扑序dp(我用记忆化dfs实现)
然后就可以搞了
1 |
|
题面
首先处理出每个炸弹爆炸直接能引爆的炸弹
然后用线段树完成区间加边操作
然后显然我们会考虑算出每个点能到的叶子节点数
然而我们发现并没有很好的算法能完成它
可以发现每个炸弹能直接或间接引爆的炸弹必然是一个区间
于是又考虑搞出这个区间的左右端点
然后就是常规操作:
然后就可以搞了
1 | #include <bits/stdc++.h> |