信息学奥赛一本通(1324:【例6.6】整数区间)
1324:【例6.6】整数区间
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 7185 通过数: 4260
【题目描述】
请编程完成以下任务:
1.读取闭区间的个数及它们的描述;
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
【输入】
首行包括区间的数目n,1≤n≤10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0≤a≤b≤10000,它们是某一个区间的开始值和结束值。
【输出】
第一行集合元素的个数,对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少。
【输入样例】
4 3 6 2 4 0 2 4 7
【输出样例】
2
【分析】
算法模型∶给 n个闭区间 [ai, bi],在数轴上选尽量少的点,使每个区间内至少有一个点。
算法:首先按 b1<=b2<=…<=bn 排序。每次标记当前区间的右端点 x,并右移当前区间指针,直到当前区间不包含 x,再重复上述操作。如下图,如果选灰色点,移动到黑色点更优。
【输出样例】
#include <stdio.h>
#define N 10010
struct point
{int x;int y;
}a[N],t;int main()
{int i,j,x,sum=0,n;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d%d",&a[i].x,&a[i].y);for(i=0;i<n-1;i++) //比较排序 {for(j=i+1;j<n;j++){if(a[i].y>a[j].y){t=a[i];a[i]=a[j];a[j]=t;}}}x=-1;for(i=0;i<n;i++){if(x>=a[i].x)continue; //贪心,如果当前区间包含标记点,就跳过sum++;x=a[i].y;}printf("%d\n",sum); //更新标记点 return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1324
信息学奥赛一本通(1324:【例6.6】整数区间)相关推荐
- 信息学奥赛一本通 1324:【例6.6】整数区间
[题目链接] ybt 1324:[例6.6]整数区间 [题目考点] 1. 贪心 2. 贪心选择性质的证明 要想证明贪心选择可以得到最优解,只需要证明最优解包含每一次的贪心选择. 使用数学归纳法: 证明 ...
- 信息学奥赛一本通(1171:大整数的因子)
1171:大整数的因子 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 7938 通过数: 4632 [题目描述] 已知正整数k满足2<=k<= ...
- 信息学奥赛一本通(1174:大整数乘法)
1174:大整数乘法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 12480 通过数: 7002 [题目描述] 求两个不超过200位的非负整数的积. [ ...
- 信息学奥赛一本通(1169:大整数减法)
1169:大整数减法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 20463 通过数: 11820 [题目描述] 求两个大的正整数相减的差. [输入] ...
- 信息学奥赛一本通(1088:分离整数的各个数)
1088:分离整数的各个数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 34493 通过数: 24697 [题目描述] 给定一个整数n(1≤n≤1000 ...
- 信息学奥赛一本通(1061:求整数的和与均值)
1061:求整数的和与均值 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 70296 通过数: 34468 [题目描述] 读入n(1≤n≤10000)个整 ...
- 信息学奥赛一本通C++语言——1117:整数去重
[题目描述] 给定含有n个整数的序列,要求对这个序列进行去重操作.所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置. [输入] 输入包含两行: 第一行包含一个正整数 ...
- 信息学奥赛一本通C++语言——1043:整数大小比较
[题目描述] 输入两个整数,比较它们的大小.若x>y,输出>:若x=y,输出=:若x<y,输出<. [输入] 一行,包含两个整数x和y,中间用单个空格隔开.0≤x<232 ...
- 信息学奥赛一本通:1168:大整数加法
1168:大整数加法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 76804 通过数: 25726 [题目描述] 求两个不超过200位的非负整数的和. ...
- 信息学奥赛一本通(1168:大整数加法)
1168:大整数加法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 44610 通过数: 14295 [题目描述] 求两个不超过200位的非负整数的和. ...
最新文章
- Spring Boot 前后端配合及接口化测试学习记录[3]
- 编程沉思-做一款小巧而好用的截图软件
- Enhanced ABAP Development with Core Data Services (CDS)
- yum 转mysql_centos下彻底删除MYSQL 和重新安装MYSQL(转)
- 吴恩达 coursera ML 第十四课总结+作业答案
- 【收藏】CDH6.2.1 配置Flink1.10(编译安装)
- b超可以看出什么_【b超能检查出什么】b超能看出男女吗_b超能查出什么妇科病 - 妈妈网百科...
- 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
- java jtree 监听_Java JTree.addTreeExpansionListener方法代码示例
- [LeetCode]Trapping Rain Water
- F - Good Words
- FormsAuthentication使用指南
- 制作卡通人物的3种简单方法
- 东芝服务器报错误代码维修,东芝复印机错误代码和维修代码
- 大地高、正高和正常高
- 470计算机毕业设计
- hp linux 禁用u盘启动项,BIOS关闭Secure Boot(安全启动)方法大全(联想,华硕,DELL,HP等品牌)...
- java程序设计案例教程答案,2年以上经验必看
- Tcp、select函数实现在线词典(C语言)
- 如何把PDF转成PPT文件?这几招简单方便