贪心——整数区间
2018-03-22 16:16
656 查看
问题 F: 【例6.6】整数区间
时间限制: 1 Sec 内存限制: 128 MB
题目描述
请编程完成以下任务:1.从文件中读取闭区间的个数及它们的描述;
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
输入
首行包括区间的数目n,1≤n≤10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0≤a≤b≤10000,它们是某一个区间的开始值和结束值。
输出
第一行集合元素的个数,对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少。
样例输入
4 3 6 2 4 0 2 4 7
样例输出
2
提示
#include<iostream> using namespace std; struct qj { int begin; int end; }a[1000]; int main() { int n; cin>>n; for(int i=0;i<n;i++) { cin>>a[i].begin>>a[i].end; } int temp; for(int i=0;i<n;i++)//根据区间终点从小到大排序 for(int j=1;j<n-i;j++) { if(a[j-1].end>a[j].end) { temp=a[j-1].end; a[j-1].end=a[j].end; a[j].end=temp; temp=a[j-1].begin; a[j-1].begin=a[j].begin; a[j].begin=temp; } } int ans=1,end_time=a[0].end; for(int i=1;i<n;i++) { if(a[i].begin>end_time)//当遇到区间与公共区间没有交点即区间开头不在公共区间内 { ans++;//区间数+1 end_time=a[i].end;//更新公共区间结尾 } } cout<<ans<<endl; return 0; }
相关文章推荐
- 贪心6--整数区间
- [贪心] 整数区间 HUSTOJ2874
- 整数区间(贪心)
- 贪心,整数区间
- poj 1716 贪心(整数区间:2-覆盖)
- 整数区间(贪心)
- UVA 10020 Minimal coverage(贪心 + 区间覆盖问题)
- HDU1050-贪心-区间重叠
- 贪心法——选择不相交区间
- 贪心法:最大不相交区间数
- 贪心法——区间选点问题
- nyoj+区间覆盖贪心
- poj3190 区间贪心 <挑战程序设计竞赛>
- #POJ2376#Cleaning Shifts(贪心 -> 最小区间覆盖)
- [ACM] POJ 1328 Radar Installation (贪心,区间选点问题)
- 51Nod 1091 线段的重叠(贪心+区间相关
- nyoj 746整数划分(四) 区间DP
- FZU 2144(几何+贪心区间覆盖)
- HDU 1051 Wooden Sticks (贪心,嵌套区间个数 )
- Moving Tables(贪心 区间覆盖)