5 条题解
-
0
#include<stdio.h> int main() { int n; scanf("%d",&n); int a[n][2]; for(int i=0;i<n;i++) { scanf("%d%d",&a[i][0],&a[i][1]); } for(int i=0;i<n-1;i++) { for(int j=0;j<n-1-i;j++) {//注意:用末时间排序 if(a[j][1]>a[j+1][1]) { int tem=a[j+1][0]; a[j+1][0]=a[j][0]; a[j][0]=tem; tem=a[j+1][1]; a[j+1][1]=a[j][1]; a[j][1]=tem; } } } if(n==1) { printf("1"); return 0; } int count=1; for(int i=0;i<n-1;i++) { if(a[0][1]<=a[i+1][0]) { count++; a[0][1]=a[i+1][1]; } } printf("%d",count); return 0; } -
0
#include <stdio.h> int main() { int i,j,n,mid,num,mid1; scanf("%d",&n); int arry[n][2]; //区间存为数组 for(i=0;i<n;i++) { scanf("%d %d",&arry[i][0],&arry[i][1]); } //将区间按deadline从小到大排序 for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(arry[j][1]>=arry[j+1][1]) { //交换结束时间 mid=arry[j][1]; arry[j][1]=arry[j+1][1]; arry[j+1][1]=mid; //交换起始时间 mid1=arry[j][0]; arry[j][0]=arry[j+1][0]; arry[j+1][0]=mid1; } } } mid=arry[0][1]; num=1; //如果前一个活动的结束时间小于下一个活动的开始时间,mum++ for(i=0;i<n-1;i++) { if(mid<=arry[i+1][0]) { num++; mid=arry[i+1][1] ; } } printf("%d",num); } -
0
#include<bits/stdc++.h> using namespace std; const int N = 100010; pair<int, int> activities[N]; // first:结束时间, second:开始时间 int main() { int n; cin >> n; for(int i = 0; i < n; i++) { cin >> activities[i].second >> activities[i].first; // 输入:开始时间,结束时间 } sort(activities, activities + n); // 按结束时间排序 int count = 0, last_end = -2e9; for(int i = 0; i < n; i++) { if(activities[i].second >= last_end) // 当前活动开始时间 >= 上一个活动结束时间 { count++; last_end = activities[i].first; // 更新最后一个活动的结束时间 } } cout << count; return 0; } -
0
#include<bits/stdc++.h> using namespace std; typedef pair<int,int>PII[100010]; int main() { int n; cin>>n; for(int i=0;i<n;i++) { cin>>PII[i].second>>PII[i].first; } sort(PII,PII+n); int ans=0,t=-2e5; for(int i=0;i<n;i++) { if(t<=PII[i].second) { ans++; t=PII[i].first; } } cout<<ans; return 0; } 和struct一样,pair也可以进行嵌套,储存的是同一个类型的数据 -
0
#include<stdio.h> #include<algorithm> #include <iostream> using namespace std; struct s{ int bi; int ei; }a[10000]; bool cmp(struct s o,struct s p){ return o.ei<p.ei; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d %d",&a[i].bi,&a[i].ei); } sort(a,a+n,cmp); int cnt=1; int k=a[0].ei; for(int i=1;i<n;i++){ if(k<=a[i].bi){ cnt++; k=a[i].ei; } // a[i+1].ei=a[i].ei; } printf("%d\n",cnt); return 0; }
- 1
信息
- ID
- 94
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 831
- 已通过
- 127
- 上传者