当前位置: 首页 > news >正文

关于大根堆,set重载运算符

题目描述

\,\,\,\,\,\,\,\,\,\,制定合理的日程能够帮助利用好时间进行加训,加训和加训。
          \,\,\,\,\,\,\,\,\,\,新学期开始了,应该好好学习了!凌晨两点整,加睡失败的你在为新一天的各项重要事件制定闹钟。
          \,\,\,\,\,\,\,\,\,\,

          \,\,\,\,\,\,\,\,\,\,你的手上有一张日程表,上面列出了一些事件发生的时间。你想在每一个日程事件开始前 111, 333 和 555 分钟各设定一个闹钟,最后,将这些闹钟按照时间先后顺序依次输出(就像你在手机闹钟界面看到的一样)。注意,如果有多个闹钟被设定在同一时间,那么它们会被视为同一个。

          \,\,\,\,\,\,\,\,\,\,正式地,假设闹钟 aaa 将在 hah_aha​ 时 mam_ama​ 分响起,闹钟 bbb 在 hbh_bhb​ 时 mbm_bmb​ 分响起,那么:

  • 如果 ha<hbh_a<h_bha​<hb​ ,闹钟 aaa 先于闹钟 bbb 响起;
  • 当 ha=hbh_a=h_bha​=hb​ 时, 如果 ma<mbm_a<m_bma​<mb​ ,闹钟 aaa 先于闹钟 bbb 响起;
  • 当 ha=hbh_a=h_bha​=hb​ 时, 如果 ma=mbm_a=m_bma​=mb​ ,闹钟 aaa 和闹钟 bbb 应当被看作同一个闹钟。

输入描述:

          \,\,\,\,\,\,\,\,\,\,每个测试文件仅有一组测试数据。\,\,\,\,\,\,\,\,\,\,第一行输入一个整数 nnn (1≤n≤10001\le n\le 10001≤n≤1000) 表示日程的数量。\,\,\,\,\,\,\,\,\,\,随后 nnn 行,第 iii 行输入两个整数 hih_ihi​ 和 mim_imi​ (3≤hi≤233\le h_i \le 233≤hi​≤23, 0≤mi≤590\le m_i\le 590≤mi​≤59) 表示第 iii 个日程开始的时分(采用 242424 小时制),数字不包含前导零。注意可能有多个日程事件开始于同一时刻。

输出描述:

          \,\,\,\,\,\,\,\,\,\,第一行输出一个整数 mmm ,代表设定的闹钟数量。\,\,\,\,\,\,\,\,\,\,随后 mmm 行,第 iii 行输出两个由单个空格分隔的整数 hi′h_i'hi′​ 和 mi′m_i'mi′​ (0≤hi′≤230\le h_i' \le 230≤hi′​≤23, 0≤mi′≤590\le m_i'\le 590≤mi′​≤59) ,代表第 iii 个闹钟在 hi′h_i'hi′​ 时 mi′m_i'mi′​ 分响起。数字不应当包含前导零。

示例1

输入

复制2 3 5 3 3

2
3 5
3 3

输出

复制4 2 58 3 0 3 2 3 4

4
2 58
3 0
3 2
3 4

说明

 

          \,\,\,\,\,\,\,\,\,\,第一个日程事件开始于 030303:050505 ,我们需要在 030303:000000 、030303:020202 和 030303:040404 这三个时刻各设置一个闹钟。
          \,\,\,\,\,\,\,\,\,\,第二个日程事件开始于 030303:030303 ,我们需要在 020202:585858 、030303:000000 和 030303:020202 这三个时刻各设置一个闹钟。
          \,\,\,\,\,\,\,\,\,\,注意到 030303:000000 和 030303:020202 这两个时刻都被设置了两个闹钟,需要将它们看成同一个,最终共需设定四个闹钟。

疑问:

今天补题,用set写了一下,发现我还不太会重载运算符。我最短路的板子中是重载<,所以在这也重载了<。其实大根堆重载运算符就是重载<,set也是<。

#include<bits/stdc++.h>
using namespace std;
int n;
struct ty{int h,m;  bool operator < (const ty& a) const {if(h==a.h) return m>a.m;return h>a.h;}
};set<ty> s;
int main(){cin>>n;for(int i=1;i<=n;i++){ty tmp,tmp2;cin>>tmp.h>>tmp.m;if(tmp.m-1<0){tmp2.h=tmp.h-1;tmp2.m=59;}else tmp2.h=tmp.h,tmp2.m=tmp.m-1;s.insert(tmp2);if(tmp.m-3<0){tmp2.h=tmp.h-1;tmp2.m=(tmp.m-3)+60;}else tmp2.h=tmp.h,tmp2.m=tmp.m-3;s.insert(tmp2);if(tmp.m-5<0){tmp2.h=tmp.h-1;tmp2.m=(tmp.m-5)+60;}else tmp2.h=tmp.h,tmp2.m=tmp.m-5;s.insert(tmp2);}cout<<s.size()<<endl;for(set<ty>::iterator it=s.begin();it!=s.end();it++){cout<<(*it).h<<' '<<(*it).m<<endl;}return 0;
}

重载也可以写在结构体外面,但这样就括号后面就不用const。

#include<bits/stdc++.h>
using namespace std;
int n;
struct ty{int h,m;  
};
bool operator < (const ty& a,const ty& b) {if(b.h==a.h) return a.m<b.m;return a.h<b.h;
}
set<ty> s;
int main(){cin>>n;for(int i=1;i<=n;i++){ty tmp,tmp2;cin>>tmp.h>>tmp.m;if(tmp.m-1<0){tmp2.h=tmp.h-1;tmp2.m=59;}else tmp2.h=tmp.h,tmp2.m=tmp.m-1;s.insert(tmp2);if(tmp.m-3<0){tmp2.h=tmp.h-1;tmp2.m=(tmp.m-3)+60;}else tmp2.h=tmp.h,tmp2.m=tmp.m-3;s.insert(tmp2);if(tmp.m-5<0){tmp2.h=tmp.h-1;tmp2.m=(tmp.m-5)+60;}else tmp2.h=tmp.h,tmp2.m=tmp.m-5;s.insert(tmp2);}cout<<s.size()<<endl;for(set<ty>::iterator it=s.begin();it!=s.end();it++){cout<<(*it).h<<' '<<(*it).m<<endl;}return 0;
}

相关文章:

关于大根堆,set重载运算符

题目描述 \,\,\,\,\,\,\,\,\,\,制定合理的日程能够帮助利用好时间进行加训&#xff0c;加训和加训。 \,\,\,\,\,\,\,\,\,\,新学期开始了&#xff0c;应该好好学习了&#xff01;凌晨两点整&#xff0c;加睡失败的你在为新一天的各项重要事件制定闹钟。 \,\,\,\,\,\,\,\,\,\, \,…...

Algae c++

描述 问题陈述 池塘中藻类的发展情况如下。 假设年初i水藻的总重量为xi​克。对于 i≥2000&#xff0c;下列公式成立&#xff1a; xi1​rxi​−D 给你r、D和x2000​。请依次计算 x2001​、...、x2010​ 并打印出来。 输入描述 输入内容由标准输入法提供&#xff0c;格式…...

开发常用的一些工具总结

开发常用的一些工具总结 记录一些常用的开发软件. Android 开发相关 : Android studio 安卓开发者必备的编辑器,也是我用过最好用的编辑器.还可以用来写JNI 和C.Android studio 插件 : GsonFormatLeakCanary 其他 VS Code :轻量级的开发工具,插件非常多,很好用,但是上手难度…...

k8s Yaml语法解析

YAML是一个类似 XML、JSON 的标记性语言。它强调以数据为中心&#xff0c;并不是以标识语言为重点。因而YAML本身的定义比较简单&#xff0c;号称"一种人性化的数据格式语言"。 YAML的语法比较简单&#xff0c;主要有下面几个&#xff1a; 1、大小写敏感 2、使用缩进…...

【晴问算法】提高篇—动态规划专题—最长公共子序列

题目描述 现有两个字符串s1​​​​与s2​&#xff0c;求s1​​​​与s2​​​​的最长公共子序列的长度&#xff08;子序列可以不连续&#xff09;。 输入描述 第一行为字符串s1​​&#xff0c;仅由小写字母组成&#xff0c;长度不超过100&#xff1b; 第一行为字符串s2​​​…...

Greetings

Problem - 1915F - Codeforces 题意 给一些(l,r)找到所有能够包含(l,r)的数目 引入 也就是找逆序对个数 要用到归并排序中的思想&#xff1a; //https://www.luogu.com.cn/problem/P1216 #include<iostream> #include<cstdio> #include<stack> #include…...

JS03-函数

函数 使用函数 // 函数声明function sayHi(){document.write(Hello!<br>)}for(let i 1; i < 6; i){// 函数调用sayHi()}函数封装 function getScore(arr){sum 0for( let i 0; i < arr.length; i){sum arr[i]}document.write(sum)}getScore([99, 66, 100])函数…...

MySQL | CRUD

目录 1. Create 2. Retrieve 2.1. SELECT列 2.1.1. 全列查询 2.1.2. 指定列查询 2.1.3. 查询字段为表达式 2.1.4. 为查询结果指定别名 2.1.5. 结果去重 2.2. WHERE条件 2.2.1. 年龄小于19的同学 2.2.2. id在2~3的同学 2.2.3. id为1和4的同学 2.2.4. 姓张的同学及张…...

【电路笔记】-MOSFET作为开关

MOSFET 作为开关 文章目录 MOSFET 作为开关1、概述2、MOSFET特性曲线2.1 截住区域2.2 饱和区域3、MOSFET作为开关的示例4、功率MOSFET电机控制5、P沟道MOSFET作为开关6、互补MOSFET作为开关电机控制器当 MOSFET 在截止区和饱和区之间工作时,MOSFET 是非常好的电子开关,用于控…...

SpringBoot+Vue项目(Vue3环境搭建 + 基础页面)

文章目录 1.项目基本介绍2.安装Node.js&#xff08;SSM部分安装过&#xff09;3.初始化前端工程1.创建一个文件夹 springboot_vue2.创建vue项目1.在刚才创建的文件夹下打开命令行&#xff0c;使用脚手架搭建项目2.选择手动配置3.选择三个4.选择vue35.选择路由模式6.选择包管理方…...

elementui el-table表格自动循环滚动【超详细图解】

效果如图 1. 当表格内容超出时&#xff0c;自动滚动&#xff0c;滚动到最后一条之后在从头滚动。 2. 鼠标移入表格中&#xff0c;停止滚动&#xff1b;移出后&#xff0c;继续滚动。 直接贴代码 <template><div><div class"app-container"><e…...

关于学习的一点粗浅见解

我们学习的每一个领域&#xff0c;大多都有着宽泛的知识面&#xff0c;那在学习过程中&#xff0c;我们是应该一开始就专钻一个方向(即深度)&#xff0c;还是应该先扩展知识面(即广度)&#xff1f;个人认为&#xff0c;应该先扩展知识面宽度&#xff0c;然后再精研某个方向&…...

[java基础揉碎]Object类详解

目录 equals方法: hashCode: toString: finalize: equals方法: 和equals对比 1.: 既可以判断基本类型&#xff0c;又可以判断引用类型 2.: 如果判断基本类型&#xff0c;判断的是值是否相等。示例: int i10; double d10.0; 3.:如果判断引用类型&#xff0c;判断的是地址是…...

23.1 微服务理论基础

23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************...

数据结构-基本概念-001

1数据结构基本概念 1.1 &#xff08;1&#xff09;一组用来保存一种或者多种特定关系的数据的集合&#xff08;组织和存储数据&#xff09;&#xff08;2&#xff09;程序的设计&#xff1a;将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中&#xff0…...

以题为例浅谈SSRF

什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能够请求到与它相连…...

Java网络编程:探索奥秘与实践

欢迎来到我的博客&#xff01;今天我们将一起探索Java网络编程的奥秘。网络编程是计算机科学中的一个重要领域&#xff0c;它使得不同的计算机系统可以相互通信和共享数据。Java的网络编程库提供了一套全面而强大的工具&#xff0c;让我们能够轻松地实现这些功能。我们将通过一…...

Leetcode992-K个不同整数的子数组[两种方法] 关键词 滑窗

文章目录 题目方法一&#xff1a;滑窗右端每次1&#xff0c;左端来回滑动方法二&#xff1a;&#xff08;最多K种的子串数&#xff09; - &#xff08;最多K-1种的子串数&#xff09; 恰好K种 题目 1 < nums.length < 20000 1 < nums[i], k < nums.length 方法一…...

【闲聊】-后端框架发展史

框架&#xff0c;是为了解决系统复杂性&#xff0c;提升开发效率而产生的工具&#xff0c;主要服务于研发人员。 当然&#xff0c;框架还有更深层的作用&#xff0c;框架的沉淀是一种高级的抽象&#xff0c;会将人类的业务逐步抽象为统一标准又灵活可变的结构&#xff0c;为各行…...

界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)

DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能&#xff0c;具有日、周、月和时间轴视图&#xff0c;并包括内置的打印支持&#xff0c;因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中&#xff08;点击这里回顾…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...