2025-01-21 22:14阅读: 3评论: 0推荐: 0

摄像头学习笔记

前言

之前学贪心的时候没有认真学,以为后面用不到……

要不是三场小考和一场大考都考到了摄像头,我差点就信了。

摄像头 1

题面

有一个监控工程:在一条长度为 L 的笔直的公路上安装若干个摄像头,用于监控交通状况。我们可以把这条公路看作数轴 [0,L]

何老板承包了这项工程,但交管部门对摄像头的安置提出了 n 个要求,每个要求形如 [x,y],表示在 [x,y] 这段区间至少要安置一个摄像头。

何老板想要用尽可能少的成本完成这项工程,因此,他想知道,最少需要安装多少个摄像头?

思路

首先贪心肯定是选择一种排序方式,来枚举线段进行模拟。

枚举线段中肯定是尽可能选线段的右端点,尽可能覆盖后面的线段,减少后面再选点。

那就只需要考虑排序方式了,线段只有两种排序方式。一种是按照左端点,另一种是按照右端点。

我们考虑一组样例。

image

显然选择按照右端点排序。

具体细节见代码。

#include<bits/stdc++.h>
#define int long long
#define PII pair<int,int>
#define ll long long
using namespace std;
const int N=1e5+5;
int n;
struct st{
	int l,r;
}a[N];
bool cmp(st a,st b)
{
	return a.r<b.r;
}
signed main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
	sort(a+1,a+n+1,cmp);
	int pos=1,ans=1;
	for(int i=2;i<=n;i++)
	{
		if(a[i].l>a[pos].r)
		{
			ans++;
			pos=i;
		}
	}
	cout<<ans<<"\n";
	return 0;
}

摄像头 2

题面

NK 中学里有一条长度为 L 的笔直道路,同学们可以把该路看作数轴,路的一段坐标为 0,一段坐标为 L,表示区间 [0,L]

在这条路上安装有 n 个摄像头,每个摄像头都有一定的拍摄区间,第 i 个摄像头覆盖的区间为 [Xi,Yi]

本着节约用电的态度,何老板想知道,最少开启几个摄像头就可以将整个这条路都置于视频监控中?请你帮他回答。

思路

摄像头 3

题面

思路

本文作者:yaaaaaan

本文链接:https://www.cnblogs.com/yaaaaaan/p/18684558

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yaaaaaan  阅读(3)  评论(0编辑  收藏  举报
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
点击右上角即可分享
微信分享提示