1. 程式人生 > >南陽14----會場安排問題

南陽14----會場安排問題

ack txt sort 排序 -- ans nbsp math.h clu

 1 //只需要按照結束時間排序貪心即可
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5 typedef struct
 6 {
 7     int x,y;
 8 }P;
 9 P p[10005];
10 bool cmp(P a,P b)
11 {
12     if(a.y < b.y) return true;
13     else if(a.y == b.y && a.x > b.x) return true;
14     return
false; 15 } 16 int main() 17 { 18 int t,n; 19 cin >> t; 20 while(t--) 21 { 22 cin >> n; 23 for(int i=0; i<n; ++i) 24 cin >> p[i].x >> p[i].y; 25 sort(p,p+n,cmp); 26 int ans = 1,temp = p[0].y; 27 for(int i=1; i<n; ++i)
28 if(p[i].x > temp) 29 { 30 ++ans; 31 temp = p[i].y; 32 } 33 cout << ans << endl; 34 } 35 return 0; 36 }
 1 //最優程序
 2 #include<stdio.h>
 3 #include <vector>
 4 #include<algorithm>
 5 #include<math.h>
 6
using namespace std; 7 8 struct activ 9 { 10 int begin; 11 int end; 12 }; 13 bool cmp( activ a,activ b) 14 { 15 return a.end<b.end; 16 } 17 int main() 18 { 19 //freopen("1.txt","r",stdin); 20 int n; 21 scanf("%d",&n); 22 while (n--) 23 { 24 int m; 25 scanf("%d",&m); 26 vector<activ> vec; 27 for(int i=0;i<m;i++) 28 { 29 activ a; 30 scanf("%d%d",&a.begin,&a.end); 31 vec.push_back(a); 32 } 33 34 sort(vec.begin(),vec.end(),cmp); 35 int count=vec.size(); 36 int k=0; 37 for (int i=1;i<vec.size();i++) 38 { 39 if(vec[i].begin <= vec[k].end) 40 count--; 41 else k=i; 42 } 43 printf("%d\n",count); 44 } 45 46 return 0; 47 }

南陽14----會場安排問題