首页 > 其他分享 >15.区间覆盖问题(贪心)

15.区间覆盖问题(贪心)

时间:2022-08-26 22:47:29浏览次数:63  
标签:15 个点 覆盖 st1 固定 区间 长度 贪心

题目描述:
设x1 , x2 ,…… , xn 是实直线上的n 个点。用固定长度的闭区间覆盖这n 个点,至少需要多少个这样的固定长度闭区间?
对于给定的实直线上的n个点和闭区间的长度k,设计解此问题的有效算法,计算覆盖点集的最少区间数,并证明算法的正确性。

输入:
输入数据的第一行有2 个正整数n和k(n≤10000,k≤100),表示有n个点,且固定长度闭区间的长度为k。接下来的1 行中,有n个整数,表示n个点在实直线上的坐标(可能相同)。

输出:
输出一个整数,表示计算出的最少区间数输出

样例①
输入

7 3
1 2 3 4 5 -2 6

输出

3

代码:

#include<bits/stdtr1c++.h>
using namespace std;
int main() {
	int n, k, t, cnt = 0;
	set<int> st1;//利用集合元素唯一性、有序性储存节点
	cin >> n >> k;
	//获取n个数字
	for (int i = 0; i < n; i++) {
		cin >> t;
		st1.insert(t);
	}
	t = INT_MIN;//用于记录当前放入的固定区间可覆盖的最大坐标
	//贪心算法进行处理
	for (auto it = st1.begin(); it != st1.end(); it++) {
		if (t < *it) {//说明不能覆盖
			cnt += 1;//添加固定区间的个数
			t = *it + k;//更新当前放入的固定区间可覆盖的最大坐标
		}
	}
	cout << cnt;
	return 0;
}

标签:15,个点,覆盖,st1,固定,区间,长度,贪心
From: https://www.cnblogs.com/Fare-well/p/16629458.html

相关文章

  • 13.活动选择(贪心)
    题目描述:学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断。现在各个社团都提交了他......
  • 14.最优合并问题(贪心)
    题目描述:给定k个排好序的序列s1,s2,……,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比......
  • 10. 汽车加油问题(贪心)
    题目描述:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。对于给......
  • Atlassian Confluence 6.15.5 添加甘特图
     AtlassianConfluence编辑模式工具栏“+”→其它宏→视觉&图像→选择“路线图编辑器”打开“插入路线图计划器”弹出框。接下来就靠你发挥了。     成......
  • java学习笔记015 集合
    1.集合Collection List 有序,可重复 Set 无序,不可重复Map key<==>value2.Collection接口通用的方法 boolean add(Ee) boolean addAll(Collectioncoll) int......
  • react18-学习笔记15-泛型
    functionecho(arg:any):any{returnarg}constresult=echo(123)functionecho<T>(arg:T):T{returnarg}constresult1=echo(123)functionswap<T,U>(tu......
  • P7115 [NOIP2020] 移球游戏 思路简记
    好题先手玩一下\(n=2\)(只有颜色\(0/1\))的情况:我们假设柱子\(1\)上有\(s\)个\(1\),那就先把柱子\(2\)顶端的\(s\)个球移到\(3\),变成这样:然后把柱子\(1......
  • 聊聊数据库建表的15个小技巧
    前言对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工......
  • navicat 导入sql文件时报错:1153 :Got a packet bigger than 'max_allowed_packet' byte
    navicat查询最大包的大小语句:showVARIABLESlike'%max_allowed_packet%';解决方法:找到MYSQL的安装目录下的my.ini文件,在最后一行添加max_allowed_packet=300M具体......
  • Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' by
    今天在用Navicat导入SQL文件时报错:MySql错误Err[Imp]1153-Gotapacketbiggerthan'max_allowed_packet'bytes查了一下,原来是MySQL默认读取执行的SQL文件最大为1......