贪心 | | 将数组和减半的最少操作数

server/2024/9/20 3:51:55/ 标签: 算法

目录

将数组和减半的最少操作数

除 2

将数组和减半的最少操作数

2208. 将数组和减半的最少操作次数 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/minimum-operations-to-halve-array-sum/description/

由题意可知,我们可以遍历数组,把数组中的每个数都减半,来实现把数组和减半,但是这样的操作数不是最少的,为了使操作数最少,显然,我们可以每次找出数组中最大的数,把最大的数减半后,继续去找数组中最大的数。

我们可以利用大根堆来帮助我们找出数组中最大的数,把数组所有的数都放进大根堆之后,堆顶就是数组中最大的数,我们把堆顶减半后,删除堆顶元素,删除后会得到一个新的大根堆,此时我们再去取出大根堆的堆顶,就可以得到减半之后数组的最大数,再继续进行减半操作。

但删除的堆顶不是一去不复返了,按照题目要求,减半后的数可以再次进堆,继续执行操作

以示例2为例,nums = [ 3 , 8 , 20 ],堆顶为20,20减半之后为10,而 10 仍然是这个数组的最大数,我们可以继续对 10 进行减半操作。

class Solution {
public:int halveArray(vector<int>& nums) {double sum=0;priority_queue<double> heap;//大根堆for(auto& e:nums){sum+=e;heap.push(e);//入大根堆}sum/=2.0;//数组和的一半int count=0;//计数double t=0;while(sum>0){t=heap.top()/2.0;//将大根堆最大的数减半heap.pop();//删除堆顶,因为堆顶已经计算过了sum-=t;heap.push(t);//把减半后的数再次进大根堆count++;//次数+1}return count;}
};

除 2

除2! (nowcoder.com)icon-default.png?t=N7T8https://ac.nowcoder.com/acm/problem/213140

和上一道题的思路类似,不过我们只能对偶数进行减半操作,故我们需要找出数组中最大的偶数,对偶数减半。 

#include<iostream>
using namespace std;
#include<queue>
int main()
{long long int n,k;//cin>>n>>k;long long int num=0;long long int sum=0;priority_queue<long long int> heap;//大根堆while(n--){cin>>num;if(num%2==0)//偶数进堆heap.push(num);sum+=num;}while(k-- && heap.size())//堆为空 或者 可以操作的次数用完了,结束while循环{long long int t=heap.top();//堆顶t/=2;sum-=t;heap.pop();if(t%2==0)//减半后是偶数,进堆heap.push(t);}cout<<sum<<endl;return 0;
}


 


http://www.ppmy.cn/server/8766.html

相关文章

四川易点慧电子商务抖音小店打造便捷生活新体验

随着互联网的迅猛发展&#xff0c;电子商务已经深入到人们生活的方方面面。在这个大背景下&#xff0c;四川易点慧电子商务抖音小店应运而生&#xff0c;凭借其独特的魅力和创新模式&#xff0c;迅速在电商领域崭露头角&#xff0c;成为了众多消费者追逐的焦点。 抖音小店作为新…

Java初学日记 十三 (GUI)

GUI编程 概述 GUI(Graphical Uers Interface)全称图形用户界面 swing指javax.swing包&#xff0c;该包中包含实现界面的类&#xff0c;这些类都可称为组件 组件可分为两大类&#xff1a; 容器组件 窗口 import javax.swing.*; ​ public class LoginFrame extends JFram…

@Autowired和@Resource

Spring支持使用@Autowired、 @Resource、@Inject三个注解进行依赖注入。 @Component(“id”) id可选,告诉spring这是一个组件,交由spring管理, 相当于xml当中的<bean>配置。 @Autowired 默认按类型进行装配(该注解由spring提供,org.springframework.beans.factory.…

恒峰智慧科技—森林防火卡口,安全宣传不放松!

随着夏季高温的来临&#xff0c;森林火灾的隐患也在逐渐加大。在这个关键时刻&#xff0c;我们必须提高警惕&#xff0c;以确保人们的生命财产安全&#xff0c;并保护我们的绿色家园。为此&#xff0c;太阳能远程4G警示监控系统应运而生&#xff0c;它将为我们提供一个有效的工…

JavaScript之模块化规范详解

文章的更新路线&#xff1a;JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题&#xff08;HTML基础知识和CSS基础知识已经更新完毕&#xff09; 正文 CommonJS、UMD、CMD和ES6是不同的模块…

第十五届蓝桥杯c++b组赛后复盘和真题展示

题目变成八道了&#xff0c;分数一百分可能&#xff0c;感觉拿奖难度还是很高 第一题是一个简单的握手问题 答案算出来1204&#xff0c;纯手写 第二题是 物理题 纯蒙&#xff0c;随便猜了个轨迹&#xff0c;答案具体忘了&#xff0c;最后是 .45 第三题暴力 第四题 我是傻逼…

消防乙级资质申请材料清单及准备技巧

材料清单 资质申请表&#xff1a;填写完整、准确的资质申请表格&#xff0c;通常需要在线填写并打印。 企业法人营业执照副本&#xff1a;复印并提供企业法人营业执照副本&#xff0c;确保信息与最新工商登记一致。 企业章程&#xff1a;提交企业章程&#xff0c;反映企业性质…

Linux操作系统·Linux简介

1.世界上第一个完善的网络操作系统 Unix是1969年由美国电话电报公司(AT&T)贝尔实验室的两个工程师所创造的操作系统&#xff0c;它允许计算机同时处理多用户和程序。目前大型政府单位、大型企业、航空公司、金融机构多在使用&#xff0c;价钱昂贵&#xff0c;但性能和稳定性…

全量知识系统 程序详细设计 定稿之 “祖传代码”:Preserving类+符号学 (QA百度搜索)

Q1. 今天继续聊 全量知识系统 程序详细设计 定稿- “祖传代码”。“祖传代码”表示全知系统的全部“可能的世界”&#xff1a;“Preserving”的一个 Phython Class 母版。“Preserving”类是 全知系统知识表征顶级范畴公理化 无上的&#xff08;topless&#xff09;重言式公理…

当Mac的hosts文件被永久锁定后的解锁方法

M3 2024新机器因为要下载一些插件包&#xff0c;需要修改hosts文件 按常规操作去修改hosts的访问权限时&#xff0c;却发现怎样也改变不了&#xff0c;在命令行方式下用sudo vim访问&#xff0c;保存时也提示异常 在网上找了一些资料&#xff0c;终于知道Mac的文件有永久锁定…

项目7-音乐播放器2(上传音乐+查询音乐+拦截器)

0.加入拦截器 之后就不用对用户是否登录进行判断了 0.1 定义拦截器 0.2 注册拦截器 生效 1.上传音乐的接口设计 请求&#xff1a; { post, /music/upload {singer&#xff0c;MultipartFile file}&#xff0c; } 响应&#xff1a; { "status": 0, "message&…

第三届 SWCTF-Web 部分 WP

写在前面 题目主要涉及的是前端 php 内容知识&#xff0c;仅以本篇博客记录自己 Web 出题的奇思妙想。 Copyright © [2024] [Myon⁶]. All rights reserved. 目录 1、HTTP 2、再见了晚星 3、myon123_easy_php 4、baby_P0P 5、LOGIN!!! 1、HTTP 首页文件默认就是 ind…

基于SpringBoot的在线五子连珠的设计与实现,前端采用vue框架;后端采用SpringBoot,mybatis

介绍 基于SpringBoot的在线五子连珠的设计与实现&#xff0c;主要是设计一款五子棋游戏&#xff0c;涉及登录注册的功能&#xff0c;人机对战、联机对战和积分排行榜的功能。其中人机对战中&#xff0c;电脑采用的是采用了一种基于局面分析的评分算法来确定机器人的下一步落子…

el-dialog 实现可以拖动的弹窗

实现可拖动弹窗。 一、在需要进行拖拽的弹窗组件添加如下代码 1.vue组件 el-dialog组件添加 v-el-drag-dialog 2.引入index 文件 import elDragDialog from ../index.js 3.引入指令 directives: {elDragDialog}, 二、index.js文件代码 ​ import drag from ./dragconst …

sql注入基础

数据库基础 数据库 : 管理多个数据表的集合 数据表&#xff1a;矩阵的方式存储数据&#xff0c;以表格显示 列&#xff1a;相同数据类型的数据集合 行&#xff1a;每一行描述某条记录的具体信息 键&#xff1a;键的值在当前列中有唯一 值&#xff1a;没个值必须和该列数据…

使用两台主机实现博客的搭建

1.运行环境 这里的主机IP是自己虚拟器的IP。 主机主机名系统服务192.168.179.128Server-WebLinuxWeb192.168.179.129Server-NFSDNSLinuxNFS/DNS 2.基础配置 1.配置主机名&#xff0c;静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com…

4.15 day6 ARM

uart.c #include "uart4.h" void uart4_config() {RCC->MP_AHB4ENSETR | (0X1 << 6);//&#xff27;RCC->MP_AHB4ENSETR | (0X1 << 1);//BRCC->MP_APB1ENSETR | (0X1 << 16);//UART4 //管脚复用GPIOG->MODER & (~(0X3 << …

安装zabbix server

目录 1、实验环境 2、yum 安装zabbix server 2.1 解决权限问题和放行流量 2.2 安装zabbix-server 1、实验环境 操作系统rhel8zabbix6.0TLS数据库mysql8.0.30IP地址192.168.81.131时间配置NTP时间服务器同步 2、yum 安装zabbix server 如果通过yum源安装&#xff0c;操作系…

企业监控员工电脑的软件分享,公司电脑监控软件有哪些

员工在使用电脑时可能会进行与工作无关的活动&#xff0c;如浏览社交媒体、玩游戏等。 也可能会在不知情的情况下访问恶意网站、下载含有病毒的文件&#xff0c;或者泄露敏感信息。 这些都可能对企业的信息安全构成严重威胁&#xff0c;因此企业会有监控员工电脑的想法。 一、…

冯唐成事心法笔记

文章目录 卷首语 管理是一生的日常&#xff0c;成事是一生的修行PART 1 知己 用好自己的天赋如何管理自我用好你的天赋成大事无捷径如何平衡工作和生活做一个真猛人做自己熟悉的行业掌控情绪如何对待妒忌和贪婪如何战胜自己&#xff0c;战胜逆境真正的高手都有破局思维有时候…