关于大根堆,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的样式和功能,具有日、周、月和时间轴视图,并包括内置的打印支持,因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中(点击这里回顾…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
