8602 区间相交问题
来源:互联网 发布:网络招生代理 编辑:程序博客网 时间:2024/05/20 06:25
8602 区间相交问题(必做)
时间限制:1000MS 内存限制:1000K
提交次数:1966 通过次数:468
题型: 编程题 语言: C++;C;VC;JAVA
Description
给定x轴上n个闭区间,去掉尽可能少的闭区间,使剩下的闭区间都不相交。
注意:这里,若区间与另一区间之间仅有端点是相同的,不算做区间相交。例如,[1,2]和[2,3]算是不相交区间。
输入格式
第一行一个正整数n(n<=50),表示闭区间数。接下来n行中,每行2个整数,表示闭区间的2个整数端点。
输出格式
输出去掉的最少的闭区间数。
输入样例
3
10 20
10 15
12 15
输出样例
2
这个问题基本等同于书本的活动安排问题。
网上的一种用了pair,所以写得有点恶心。记住 second 是左端点, first 才是右端点就行了。
#include <iostream>#include <utility>#include <algorithm>using namespace std;
int main(){ int n;
while(cin>>n) { pair<int,int> p[n]; for(int i=0; i<n; i++) { cin >> p[i].second; cin >> p[i].first; if(p[i].second > p[i].first) { swap(p[i].second, p[i].first); } } sort(p, p+n); int last, cnt; last = p[0].first; cnt = 1; for(int i=1; i<n; i++) { if(p[i].second >= last) { cnt++; last = p[i].first; } } cout << n - cnt << endl; } return 0;}
第二种:#include <iostream>
#include <string.h>
#include <algorithm>//c++ sort
using namespace std;
int cmp( const int &a, const int &b ){
if( a > b )
return 1;
else
return 0;
}// sort(a,a+n,cmp);
struct Extent
{
int a,b;
bool operator < (const Extent& S)const
{
return b < S.b;
}
}B[10002];
int main()
{
int s[100];
int f[100];
int n,m;
cin >>n;
m=n;
for(int i=1;m>0;i++,m--){
cin >>B[i].a;
cin >>B[i].b;
}
sort(B,B+n);
// int A[100];
// memset(A,0,100*sizeof(int));
int sum=0;
int end = -1;
for(int i=1;i<=n;i++){
if(end<=B[i].a){
end=B[i].b;
sum++;
}
}
cout << n-sum << endl;
return 0;
}
第三种:#include <iostream>#include <stdio.h>using namespace std;int n;int s[100];int e[100];void myS(){ for(int i=0;i<n;i++){ for(int j=i;j<n;j++){ if(e[i]>e[j]){ //注意是比较结束时间 int temp = s[i]; s[i] = s[j]; s[j] = temp; temp = e[i]; e[i] = e[j]; e[j] = temp; } } }}int main(){ freopen("in.txt","r",stdin); cin >> n; for(int i=0;i<n;i++) cin >> s[i] >> e[i]; myS(); int num =1; // 注意num 至少为1 int ee = e[0]; //假定第一个为标准 for(int i=1;i<n;i++){ if(ee<=s[i]){ //注意是>= 边界问题 num++; ee = e[i]; } } cout << n-num << endl; return 0;}
0 0
- 8602 区间相交问题
- 8602 区间相交问题
- 8602 区间相交问题(贪心)
- 区间相交问题
- 区间相交问题
- 区间相交问题
- 区间相交问题
- 区间相交问题
- 区间相交问题
- 区间相交问题
- 贪心:区间相交问题
- FOJ 1230 区间相交问题
- FOJ 1230 区间相交问题
- 区间相交问题(贪心)
- 区间相交问题(贪心)
- 4.2 8602 区间相交问题(必做)
- NYOJ_14会场安排问题(不相交区间)
- 南邮 OJ 1269 区间相交问题
- Java NIO 系列教程
- 17085 工作分配问题
- 11089 多机最佳调度
- 8603 子集和问题
- 11079 可以移动的石子合并
- 8602 区间相交问题
- 11077 最长公共子字符串
- CSDN的博客积分规则及博客排名规则
- 欢迎使用CSDN-markdown编辑器
- C/C++ 类型自动转换规则
- 10303 数字三角
- Android-adapter的用法
- mysql简单备份与恢复
- 动态规划之01背包问题(最易理解的讲解)