贪心算法.

哈夫曼树

        哈夫曼树(Huffman Tree),又称为霍夫曼树或最优二叉树,是一种带权路径长度最短的二叉树,常用于数据压缩。
        定义:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度(Weighted Path Length, WPL)达到最小,则称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,其中权值较大的结点离根较近。
        如图:a 和 b的权值一定小于c的权值,c的权值一定小于d的权值。证明:若b > c那么交换b 和 c的位置后,该树的总权值为:3a + 3c + 2b +d,所以3a + 3c + 2b +d < 3a + 3b + 2c + d,又因为哈夫曼树的带权路径长度最小,而b > c时,使得该树的总权值增大,违反了哈夫曼树的定义,所以b < c。

题目:148. 合并果子 - AcWing题库

这道题与之前的dp石子合并,不一样。前者是严格相邻的石子堆,而后者是任意石子堆。

本道题就是典型的哈夫曼树问题,注意使用小根堆,使得最小的节点在最前面。

代码:

#include<bits/stdc++.h>using namespace std;int n;int main()
{cin >> n;priority_queue<int, vector<int>, greater<int>> q;for(int i = 0; i < n; i ++ ){int a;cin >> a;q.push(a);}int res = 0;//每次取出来前两个,并将其合并的值推回堆中while(q.size() >= 2){int x = q.top();q.pop();int y = q.top();q.pop();x += y;q.push(x);res += x;}cout << res << endl;return 0;
}

题目:913. 排队打水 - AcWing题库

        思路 

先对样例进行计算:第二个人所需要等待的时间为:3;第三个人用来等待的时间为:3 + 6;
        第四个人所需要等待的时间为:3 + 6 + 1;第五个人用来等待的时间为:3 + 6 + 1 + 4;
        第六个人:3 + 6 + 1 + 4 + 2;第六个人:3 + 6 + 1 + 4 + 2 + 5。

规律就是:所需要等待的总时间 = 第i个人打水所需要的时间 * (n - i)
        公式:a[1]*(n - 1) + a[2] * (n - 2) + ... + a[n] * (n - n)。
越靠前的人,所占用的总时间的乘数更大。所以我们要尽可能的使靠前的人打水时间尽可能的小。所以对所有人打水所需要的时间大小进行排序,时间小的人先打水
证明:
    假设x > y。①x * (n - i) + y * (n - i - 1) = max1; ②y * (n - i) + x * (n - i - 1) = max2
    ① - ② == x - y > 0,所以max1 > max2,所以应将小数放在之前总和更小。

代码:

#include<bits/stdc++.h>using namespace std;int n;
int a[100010];int main()
{cin >> n;for(int i = 1; i <= n; i ++ ) cin >> a[i];sort(a + 1, a + n + 1);long long res = 0;//下标从0开始,需多减去1for(int i = 1; i <= n; i ++) res += a[i] * (n - i);cout << res << endl;return 0;
}

题目:104. 货仓选址 - AcWing题库

        若选点到a、b的总距离的最小值,如右图。那么我们扩展到多点,只要让y在所有区间内,那么选y点到所有点的总距离一定最小,而y点即是所有点的中位数

 代码:

#include<iostream>
#include<algorithm>
#include<cmath>using namespace std;int n; 
int a[100010];int main()
{cin >> n;for(int i = 0; i < n; i ++ ) cin >> a[i];sort(a, a + n);//取中点int s = a[n / 2],ans = 0;for(int i = 0; i < n; i ++ ) ans += abs(s - a[i]);cout << ans;
}

题目:125. 耍杂技的牛 - AcWing题库

思路:

 这里叠罗汉是仅仅叠成一束,而非三角。

贴图来源:耍杂技的牛 。
综上,我们对所有的w[ i ] + s[ i ] 求和之后进行排序,当w[ i ] + s[ i ] > w[i + 1] + s[ i + 1 ]时,交换第i与第i + 1头牛会使风险降低;否则当w[ i ] + s[ i ] <= w[i + 1] + s[ i + 1 ],不需要交换就能保证风险最低,所以直接对w[ i ] + s[ i ] 求和之后进行排序进行升序排序即可

代码:

#include<bits/stdc++.h>using namespace std;int n;
typedef pair<int, int> pii;pii a[50010];
int main()
{cin >> n;for(int i = 0; i < n; i ++ ){int w, s;cin >> w >> s;//对重量以及强壮程度的和进行排序a[i]={w + s, w};}sort(a, a + n);int sum = 0, res = -1e9;for(int i = 0; i < n; i ++ ){int x = a[i].first, y = a[i].second;//在所有风险值中取最大值。该危险值 = 先前总质量 - 该牛的强壮程度值res = max(res, sum - x + y);sum += y;//计算先前总质量}cout << res;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3270231.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

大话成像公众号文章阅读学习(一)

系列文章目录 文章目录 系列文章目录前言一、扫射拍摄二、索尼Alpha 9 III2.1. 视频果冻效应2.2 闪光灯同步速度2.3 其他功能 三 A9III 局限性总结 前言 大话成像是一个专注成像的公众号&#xff0c;文章都很好。 今天看的这篇是 特朗普遭枪击后“大片”出自它 文章地址 htt…

Python | Leetcode Python题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; class PeekingIterator:def __init__(self, iterator):self.iterator iteratorself._next iterator.next()self._hasNext iterator.hasNext()def peek(self):return self._nextdef next(self):ret self._nextself._hasNext self.itera…

SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用

参考: https://github.com/sgl-project/sglang 纯python写,号称比vllm、tensorRT还快 暂时支持模型 安装 可以pip、源码、docker安装,这里用的pip 注意flashinfer安装最新版,不然会可能出错误ImportError: cannot import name ‘top_k_top_p_sampling_from_probs’ fr…

万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”

在金秋送爽的11月&#xff0c;南京这座历史悠久而又充满活力的城市&#xff0c;即将迎来一场科技盛宴——2024南京智慧城市、物联网、大数据展会。这不仅是一场技术的集会&#xff0c;更是未来生活蓝图的预览&#xff0c;它汇聚了全球顶尖的科技企业、创新者及行业精英&#xf…

1.2 单链表定义及操作实现(链式结构)

1.单链表定义 链式存储&#xff1a;用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性 表简称线性链表。 为了正确表示结点间的逻辑关系&#xff0c;在存储每个结点值的同时&#xff0c;还必须存储指示其直接 后继结点的地址&#xff08;或位置&#xff09;…

04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。 Map Remote是将指定的网络请求重定向到另一个网址。Map Local是将指定的网络请求重定向到本地文件。 一、Map Remote 假设代码中调用了接口A&#xff0c;但是接口A的响应结果不能满足需求&#xff1b;此时&#xff0c;有另一个…

第15周 Zookeeper分布式锁与变种多级缓存

Zookeeper **************************************************************

heic怎么转换成jpg?heic转jpg,分享6款图片格式转换器免费汇总!

众所周知&#xff0c;在与非苹果手机设备用户&#xff08;如安卓手机或Windows台式机用户&#xff09;分享照片之前&#xff0c;通常需要将iphone的heic格式转换为jpg。由于这些操作系统的旧版本不原生支持heic图片格式&#xff0c;因此需要额外的第三方工具来查看这些图像。因…

0727,学什么学,周六就应该休息!!!!!

周六就应该休息&#xff0c;一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01&#xff1a;使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器&#xff01;&#xff01;&#xff01; 今天到此为止&#x…

24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合

目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输…

面向切面编程(AOP)

通知类型 Grep Console插件可右键选中日志高亮显示 正常情况 异常情况(around after和目标方法在一起&#xff0c;目标方法异常后&#xff0c;around after不执行) 通知顺序 execution 需要匹配两个没有任意交集的方法时&#xff0c;可以使用两个execution annotation 自定义…

【计算机网络】期末实验答辩

注意事项&#xff1a; 1&#xff09;每位同学要在下面做过的实验列表中选取三个实验进行答辩准备&#xff0c;并将自己的姓名&#xff0c;学号以及三个实验序号填入共享文档"1&#xff08;2&#xff09;班答辩名单"中。 2&#xff09;在答辩当日每位同学由老师在表…

支持向量机 及其分类案例详解(附Python 代码)

支持向量机分类器预测收入等级 我们将构建一个支持向量机&#xff08;SVM&#xff09;分类器&#xff0c;以预测一个人基于14个属性的收入等级。我们的目标是判断收入是否高于或低于每年$50,000。因此&#xff0c;这是一个二元分类问题。我们将使用在此处可用的人口普查收入数…

Python高维度大型气象矩阵存储策略分享

零、前情提要 最近需要分析全球范围多变量的数值预报数据&#xff0c;将grb格式的数据下载下来经过一通处理后需要将预处理数据先保存一遍&#xff0c;方便后续操作&#xff0c;处理完发现此时的数据维度很多&#xff0c;数据量巨大&#xff0c;使用不同的保存策略的解析难度和…

nowcoder bc49判断两个数的大小关系

描述 KiKi想知道从键盘输入的两个数的大小关系&#xff0c;请编程实现。 输入描述&#xff1a; 题目有多组输入数据&#xff0c;每一行输入两个整数&#xff08;范围-231~231-1&#xff09;&#xff0c;用空格分隔。 输出描述&#xff1a; 针对每行输入&#xff0c;输出两…

zotfile基础配置详解

zotfile可以将自动移动pdf到指定文件夹中&#xff0c;那么应该如何配置呢&#xff1f; 遵循极简原则&#xff0c;只需配置两个地方即可。 一、路径配置 第一处是pdf附件存放的位置&#xff0c;可以指定自己想要的地方&#xff0c;我放在了C盘的文档文件夹下。 第二处是分类法…

由恶劣事件: CrowdStrike发布案例更新导致微软全球蓝屏事件的启示

前言 网络安全公司 CrowdStrike 周四发布软件更新后&#xff0c;机场、银行、证券交易所、911 服务、交通系统、酒店、新闻媒体、医院、紧急服务等开始出现臭名昭著的蓝屏死机 (BSOD)。在看似多年来最严重的 IT 中断中&#xff0c;大规模的网络安全软件问题正在全球范围内造成…

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

文章目录 1. 下载和准备工作1.1 安装包下载1.2 前提条件 2. 安装过程STEP 1: 解压并配置Hadoop选择环境变量添加位置的原则检查环境变量是否生效 STEP 2: 配置Hadoop2.1. 修改core-site.xml2.2. 修改hdfs-site.xml2.3. 修改mapred-site.xml2.4. 修改yarn-site.xml2.5. 修改hado…

C/C++大雪纷飞代码

目录 写在前面 C语言简介 EasyX简介 大雪纷飞 运行结果 写在后面 写在前面 本期博主给大家带来了C/C实现的大雪纷飞代码&#xff0c;一起来看看吧&#xff01; 系列推荐 序号目录直达链接1爱心代码https://want595.blog.csdn.net/article/details/1363606842李峋同款跳…

Linux笔记 --- 程序入门

‘\n’换行符 通常来讲我们都是使用这个符号来进行换行的操作&#xff0c;但是这个符号不仅仅是用于换行 当标准输出文件中默认使用缓冲 &#xff0c;也就是当遇到 \n 的时候会进行刷新缓冲区&#xff08;把数据输 出&#xff09; 当打印语句后面没有换行符时 &#xff0c; 需要…