关于大根堆,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重载运算符
题目描述 \,\,\,\,\,\,\,\,\,\,制定合理的日程能够帮助利用好时间进行加训,加训和加训。 \,\,\,\,\,\,\,\,\,\,新学期开始了,应该好好学习了!凌晨两点整,加睡失败的你在为新一天的各项重要事件制定闹钟。 \,\,\,\,\,\,\,\,\,\, \,…...
Algae c++
描述 问题陈述 池塘中藻类的发展情况如下。 假设年初i水藻的总重量为xi克。对于 i≥2000,下列公式成立: xi1rxi−D 给你r、D和x2000。请依次计算 x2001、...、x2010 并打印出来。 输入描述 输入内容由标准输入法提供,格式…...
开发常用的一些工具总结
开发常用的一些工具总结 记录一些常用的开发软件. Android 开发相关 : Android studio 安卓开发者必备的编辑器,也是我用过最好用的编辑器.还可以用来写JNI 和C.Android studio 插件 : GsonFormatLeakCanary 其他 VS Code :轻量级的开发工具,插件非常多,很好用,但是上手难度…...
k8s Yaml语法解析
YAML是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。 YAML的语法比较简单,主要有下面几个: 1、大小写敏感 2、使用缩进…...
【晴问算法】提高篇—动态规划专题—最长公共子序列
题目描述 现有两个字符串s1与s2,求s1与s2的最长公共子序列的长度(子序列可以不连续)。 输入描述 第一行为字符串s1,仅由小写字母组成,长度不超过100; 第一行为字符串s2…...
Greetings
Problem - 1915F - Codeforces 题意 给一些(l,r)找到所有能够包含(l,r)的数目 引入 也就是找逆序对个数 要用到归并排序中的思想: //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(SSM部分安装过)3.初始化前端工程1.创建一个文件夹 springboot_vue2.创建vue项目1.在刚才创建的文件夹下打开命令行,使用脚手架搭建项目2.选择手动配置3.选择三个4.选择vue35.选择路由模式6.选择包管理方…...
elementui el-table表格自动循环滚动【超详细图解】
效果如图 1. 当表格内容超出时,自动滚动,滚动到最后一条之后在从头滚动。 2. 鼠标移入表格中,停止滚动;移出后,继续滚动。 直接贴代码 <template><div><div class"app-container"><e…...
关于学习的一点粗浅见解
我们学习的每一个领域,大多都有着宽泛的知识面,那在学习过程中,我们是应该一开始就专钻一个方向(即深度),还是应该先扩展知识面(即广度)?个人认为,应该先扩展知识面宽度,然后再精研某个方向&…...
[java基础揉碎]Object类详解
目录 equals方法: hashCode: toString: finalize: equals方法: 和equals对比 1.: 既可以判断基本类型,又可以判断引用类型 2.: 如果判断基本类型,判断的是值是否相等。示例: int i10; double d10.0; 3.:如果判断引用类型,判断的是地址是…...
23.1 微服务理论基础
23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************...
数据结构-基本概念-001
1数据结构基本概念 1.1 (1)一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据)(2)程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中࿰…...
以题为例浅谈SSRF
什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连…...
Java网络编程:探索奥秘与实践
欢迎来到我的博客!今天我们将一起探索Java网络编程的奥秘。网络编程是计算机科学中的一个重要领域,它使得不同的计算机系统可以相互通信和共享数据。Java的网络编程库提供了一套全面而强大的工具,让我们能够轻松地实现这些功能。我们将通过一…...
Leetcode992-K个不同整数的子数组[两种方法] 关键词 滑窗
文章目录 题目方法一:滑窗右端每次1,左端来回滑动方法二:(最多K种的子串数) - (最多K-1种的子串数) 恰好K种 题目 1 < nums.length < 20000 1 < nums[i], k < nums.length 方法一…...
【闲聊】-后端框架发展史
框架,是为了解决系统复杂性,提升开发效率而产生的工具,主要服务于研发人员。 当然,框架还有更深层的作用,框架的沉淀是一种高级的抽象,会将人类的业务逐步抽象为统一标准又灵活可变的结构,为各行…...
界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)
DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能,具有日、周、月和时间轴视图,并包括内置的打印支持,因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中(点击这里回顾…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
