解题思路
二维转为一维的来处理。贪心做法,每次找到合法且右端点最远的墙,去掉这个墙。
注意事项
1.遍历每一列的时候,每次都是找合法(能盖住当前的这个列)且右端点最远的墙。体现在这个条件上:
if (!vis[j] && pp[j].s <= i && pp[j].e >= i && maxlen< pp[j].e) {
//当前是第i列,线段要能覆盖这个点
...
}
2.看别人题解,说要记得处理输入可能出现的左端点大于右端点的情况。
参考代码
#include<stdio.h>
#include<iostream>
#include<vector>
#include<cstring>
#include<cstdio>
#include<climits>
#include<cmath>
#include<algorithm>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<stack>
#