8 solutions
-
0
这题应该挺经典,这是本小白第二次看见他了(虽然还是错了QAQ)
我们可以这么看,我们已知的是一段段间距,其分别对应一个开始坐标,和一个结束坐标,其分别在时间轴上占据了一个点,求这个时间轴上最多可容纳的间断数。
成语“有始有终”,每个间断必定有一个终点。我们以终点为标准排序,此操作的目的是为求最多。
然后接着我们要做的就是筛选了,以0为基点,用段起点来判断是否满足条件,逐一更新,满足条件的段的终点就是下个段可开始的基点
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; struct node{ int e,b; }a[1003]; int cmp(node x,node y) { return x.e < y.e; } int main() { int n,ans = 0; scanf("%d",&n); for(int i = 1;i <= n;i++) { scanf("%d%d",&a[i].b,&a[i].e); } sort(a + 1,a + n + 1,cmp); int t = 0; for(int i = 1;i <= n;i++) { if(a[i].b >= t) { ans++; t = a[i].e; } } printf("%d",ans); return 0; }
Information
- ID
- 91
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 6
- Tags
- # Submissions
- 201
- Accepted
- 61
- Uploaded By