当前位置: 首页 > 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;点击这里回顾…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...