综合应用的好题:代码复杂度也比较符合t2的要求
题目大意:
1 n*m的地图,第一行是入口(水),第n行是出口(城市),每格都有个高度值,只能从高到低移动;
2 求用最少的入口,把所有的出口都联通。
解题思路:%HW同学,讲解细致!
1 通过宽搜,把每个入口能到达的出口找出来,记录入口的左右边界(l,r);
1.1 思考难点:如果一个入口不能到达连贯的区间的出口,那么中间的出口就永远无法到达;
1.2 如果地图只有一行(出口也是入口),要注意特判。
2 宽搜的时候,用v数组记录出口的到达情况,全部宽搜结束后判断,如果有出口未被到达,游戏结束0。
3 如果2能过了,就做DP,求用最小的区间实现完全覆盖。
上代码:ps很多细节处理,要认真阅读代码注解
#include<cstdio>
#include<cstring>
#in