1 /*
2 先按右端点由小到大排序,相等的话左端点由大到小(否则会少算)
3 */
4 #include <iostream>
5 #include <cstdlib>
6 #include <cstring>
7 using namespace std;
8
9 const int N = 10000;
10 /**下面的不会用
11 typedef struct Node
12 {
13 int a, b;
14 bool operator < (const Node &node) const//此时使用sort排序
15 {
16 return b<node.b || b==node.b&&a>node.a;
17 }
18 };
19 Node q[N];
20 */
21
22 typedef struct Node
23 {
24 int a, b;
25 };
26 Node q[N];//不可直接把q[N]定义在typedef后边
27 int cmp(const void *a, const void *b)
28 {
29 Node *c = (Node *)a;
30 Node *d = (Node *)b;
31 if(c->b == d->b)
32 return c->a < d->a;
33 return c->b > d->b;
34
35 }
36 int cnt = 0;
37
38 int main()
39 {
40 int i,j,k;
41 int T;
42 cin>>T;
43 int n;
44 while(T--)
45 {
46 memset(q,0,sizeof(q));
47 cin>>n;
48 for(i=0; i<n; i++)
49 {
50 cin>>q[i].a>>q[i].b;
51 }
52 qsort(q,n,sizeof(Node),cmp);
53 int end = -1;//坐标全是正数
54
55 for(i=0; i<n; i++)
56 {
57 if(end < q[i].a)
58 {
59 end = q[i].b;
60 cnt++;
61 }
62 }
63 cout<<cnt<<endl;
64 }
65 return 0;
66
67 }