9 条题解
-
0
C的写法,使用了qsort进行排序,也因此需要写出相应的比较函数
#include <stdio.h> #include <stdlib.h> typedef struct Activity{ int start; int end; } Activity; Activity activity[10000]; int n; int ans; void init() { int s,e; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d", &s, &e); activity[i].start = s; activity[i].end = e; } } int cmp(const void *a, const void *b) { Activity *x = (Activity *)a; Activity *y = (Activity *)b; if (x->end == y->end) { return x->start - y->start; } else { return x->end - y->end; } } void solve() { qsort(activity, n, sizeof(Activity), cmp); ans = 1; int last = activity[0].end; for (int i = 1; i < n; i++) { if (activity[i].start >= last + 1) { ans++; last = activity[i].end; } } printf("%d\n", ans); } int main() { int m; scanf("%d", &m); for (int i = 0; i < m; i++) { init(); solve(); } return 0; }
以下为qsort函数原型
void qsort( void *base, // 待排序数组的首地址(任意类型指针) size_t nmemb, // 数组中元素的个数 size_t size, // 每个元素的大小(单位:字节) int (*compar)(const void *, const void *) // 比较函数指针 );
信息
- ID
- 124
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 1724
- 已通过
- 224
- 上传者