问题 C: 活动选择

题目描述

      学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。    

      现在给出n个活动使用礼堂的起始时间bi和结束时间ei(bi < ei<=32767),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。

输入

第一行一个整数n(n<=1000); 接下来的n行,每行两个整数,第一个bi,第二个是ei(bi < ei<=32767)

输出

输出最多能安排的活动个数

样例输入 Copy
11
3 5
1 4
12 14
8 12
0 6
8 11
6 10
5 7
3 8
5 9
2 13
样例输出 Copy
4

问题分析

我们要想想要怎么贪心,我们的目标是想选到最多的活动

关键是优先选择结束时间最早的活动,这样就为后续的其他活动留下更多的时间

所以我们要先根据每个活动的结束时间从小到大进行排序

第一个活动肯定先被选进来了,然后我们依次看后面的活动和上一个可被选择的活动是否冲突

如果不冲突的话我们就可以选择这个活动,可选择活动数+1

预备知识

定义结构体,其中Hd是结构体的名字,你可以取自己想取的名字

其中有两个元素,一个bi,一个ei

struct Hd{ //这个结构体的名字叫Hdint bi; //存活动开始时间int ei; //存活动结束时间
};

cmp是一个自定义的比较函数,用于确定两个Hd结构体实例在排序时的顺序,为sort提供一个排序的准则

接受两个参数,a和b,两个参数都是对Hd结构体的引用,并且是常量引用(由const关键字标示),所以写法是const Hd& a,意味着这些引用在函数内部不会修改它们指向的结构体

bool cmp(const Hd& a,const Hd& b) {return a.ei<b.ei; //按活动结束时间从小到大排序
}

每一个元素都是Hd结构体类型,vector就是存多个元素的容器

所以这句话就是有n个Hd类型的元素存在名字叫a的容器当中

#include <bits/stdc++.h>
using namespace std;struct Hd{ //这个结构体的名字叫Hdint bi; //存活动开始时间int ei; //存活动结束时间
};bool cmp(const Hd& a,const Hd& b) {return a.ei<b.ei; //按活动结束时间从小到大排序
}int main() {int n;cin>>n;vector<Hd> a(n); //这个vector存的是n个Hd类型的活动,也就是每个元素是个结构体for(int i=0;i<n;i++) {cin>>a[i].bi>>a[i].ei; //输入每个活动的开始和结束时间}sort(a.begin(),a.end(),cmp); //对活动进行排序int ans=1; //第一个活动被选择int end=a[0].ei; //第一个活动的结束时间,以后就是存下一个可选活动结束时间for(int i=1;i<n;i++) { //看后续的活动的情况,所以下标是1开始了if(a[i].bi>=end) { //如果当前活动的开始时间大于等于前一个可选活动结束时间ans=ans+1; //说明该活动与前一个可选活动不冲突,可选活动数加1end=a[i].ei; //那么结束时间变为该可选活动结束时间}}cout<<ans; //输出几个可安排的活动
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache网页优化

本章主要介绍如何对Apache网页进行优化 Apache 网页压缩Apache 网页缓存Apache 隐藏版本信息Apache 网页防盗链 目录 1、网页压缩与缓存 1.1、网页压缩 &#xff08;1&#xff09;gzip介绍 &#xff08;2&#xff09;HTTP压缩的过程 &#xff08;3&#xff09;Apache的…

免费的GPT4来了,你还不知道吗?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

在Linux写自己的第一个程序“hello Linux”

01.nano指令 我们在Windows中有很多的编译环境&#xff0c;大家应该都很熟悉&#xff0c;但是在Linux中&#xff0c;我们怎么写代码呢&#xff1f; 这里&#xff0c;我介绍一个非常简单的指令->nano 这个指令就类似于我们Windows中的记事本&#xff0c;使用方法也很简单 …

网络连接 UDP2,UDP Connect, bind, send, recieve认知, -入门8

LWIP编程接口有RAW, NETCONN, SOCKET 2.UDP函数的理解 #define UDP_SERVER_PORT 8000 //PC side #define UDP_CLIENT_PORT 1234 // ctrl board side //PC IP address #define DEST_IP_ADDR0 192 #define DEST_IP_ADDR1 168 #define DEST_IP_ADDR2 3 #define DEST_IP_ADDR3 11…

SRS服务器RTMP2WebRTC外网拉流配置

将前端服务开放到外网&#xff0c;并且在外网使用WebRTC拉流&#xff0c;要求全部使用同一端口。 外网地址&#xff1a;10.172.59.42&#xff08;域名&#xff1a;test.com&#xff09;外网端口为33333内网SRS服务器地址&#xff1a;192.168.5.177&#xff0c;内网端口为10090…

算法训练day60|单调栈part0

参考&#xff1a;代码随想录 84.柱状图中最大的矩形 要求当前柱形的左右两边第一个比他小的位置 对于高度为5的柱子&#xff08;index为2&#xff09; mid 他的左边第一个比他小的柱子为1&#xff0c;index为1 left 他的右边第一个比他小的柱子高度为2&#xff0c;index为4…

待做事项提醒 项目

GitHub - kesin/taskover: Taskover is a simple planlist tools to manage your task easily. app-version - APP 版本管理系统 源码地址&#xff1a;https://github.com/xtTech/app-version/ 考试答题&#xff1a;https://gitee.com/beautiful-life/exam 追风考试系统 vu…

【sed学习】sed -i和sed -i -e有什么区别

前言&#xff1a; 项目脚本有句sed -i $aPRODUCT_PACKAGES rtk_mdnsd device.mk sed -i -e $a/vendor/bin/ipv4lld u:object_r:ipv4lld_exec:s0 sepolicy/file_contexts不太清楚sed -i和sed -i -e有什么区别&#xff0c;学习一下 sed -i 和 sed -i -e 是用于编辑文件中匹配模式…

GB∕T 33171-2016 城市交通运行状况评价规范

免登陆免积分下载地址 标准号&#xff1a;GB/T 33171-2016 中文标准名称&#xff1a;城市交通运行状况评价规范 英文标准名称&#xff1a;Specification for urban traffic performance evaluation 中国标准分类号&#xff08;CCS&#xff09;R85 国际标准分类号&#xff08;…

提前终止 Lambda forEach 的两种方法

在Java中&#xff0c;Lambda表达式提供了一种简便的方式来对集合进行迭代处理。然而&#xff0c;有时我们可能希望在特定条件下提前终止forEach的执行。这篇博客将介绍两种实现这一目标的方法。 方法一&#xff1a;使用异常 我们可以通过在Lambda表达式中抛出自定义异常的方式…

软件测试|SQL中的null值,该如何理解?

深入理解SQL中的Null值&#xff1a;处理缺失数据的重要概念 简介 Null值在SQL中是用于表示缺失或未知数据的特殊值。本文将深入探讨Null值的概念、处理方法和注意事项&#xff0c;以帮助读者更好地理解和处理SQL中的缺失数据。 在SQL数据库中&#xff0c;Null值是一种特殊的…

gitlab高级功能之Kubernetes Agent介绍

文章目录 1. 前置条件2. 简介3. GitLab Kubernetes Agent 的部署3.1 启用 Agent 服务端3.2 创建 Agent 配置和清单仓库 4. 安装agent4.1 连接k8s集群4.2 在集群中部署4.3 修改资源清淡&#xff0c;调整pod的副本数 5. 思考 1. 前置条件 gitlab 14.5 专业版k8s集群helm客户端工…

xadmin-plus

python之Xadmin-plus是什么&#xff1f; xadmin-plus: xadmin的django3.2版本支持。 Xadmin是一个非常优秀的Django Admin插件&#xff0c;可惜的是已经停止更新。Xadmin-plus对其进行了升级兼容。支持python3.10、Django3.2。 特性 Django Admin直接替换基于Twitter Boots…

uniapp存储讲解

在 Uni-app 中&#xff0c;你可以使用本地缓存来存储应用程序的数据。Uni-app 提供了两种本地缓存方式&#xff1a;uni.setStorageSync 和 uni.setStorage。其中&#xff0c;uni.setStorageSync 同步方式存储数据&#xff0c;适合小数据量的存储&#xff1b;而 uni.setStorage …

uniapp 跨页面传参的几种方式

当我们在开发Uni-app应用时&#xff0c;经常会遇到需要在不同页面之间传递参数的情况。为了实现跨页面传参&#xff0c;Uni-app提供了以下几种方式&#xff1a; URL传参&#xff1a;这是一种简单且常用的方式。在跳转页面时&#xff0c;可以通过在URL中添加参数来传递数据。目…

Docker 发布自定义镜像到公共仓库

Docker 发布自定义镜像到公共仓库 引言 Docker 是一种轻量级、便携式的容器化技术&#xff0c;可以使应用程序在不同环境中更加可移植。在本文中&#xff0c;我们将学习如何使用 Docker 从公共仓库拉取 Nginx 镜像&#xff0c;定制该镜像&#xff0c;添加自定义配置文件&…

【Redis端口】通过修改端口一个计算机上可以运行两个redis

一个计算机上可以运行多个Redis实例。每个Redis实例都会监听一个特定的端口&#xff0c;所以只要确保每个实例使用的端口不冲突&#xff0c;就可以在同一台计算机上运行多个Redis实例。例如&#xff0c;你可以配置一个Redis实例监听6379端口&#xff0c;另一个Redis实例监听638…

卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统

卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统 卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统 卫星时钟服务器、NTP时钟服务器、GPS北斗网络时钟系统 应用背景 根据人民银行第2012年第8期《金融业信息安全风险提示》建议大力推广采用能够接收GPS和北斗时钟源信号…

Linux内核--进程管理(六)内核进程管理几种CPU调度策略

目录 一、引言 二、CPU调度的直观想法 ------>2.1、FIFO ------>2.2、Priority ------>2.3、调度矛盾 三、各种CPU调度算法 ------>3.1、FCFS(First Come,First Served) ------>3.2、SJF(Short Job First,短作业优先) ------>3.3、RR算法(按时间片…

Java-变量类型-分类

1 需求 2 接口 3 示例 public class RunoobTest {// 成员变量private int instanceVar;// 静态变量private static int staticVar;public void method(int paramVar) {// 局部变量int localVar 10;// 使用变量instanceVar localVar;staticVar paramVar;System.out.println(…