C++的sort函数如何实现从大到小排序

2023-11-12

一、sort的基本用法

1. 所在的头文件

#include<algorithm> 中。

2. 包含的参数

C++的sort函数有三个参数,sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。

如果要实现从大到小排序的话,就需要将cmp重写。具体如下:

bool cmp(int a,int b)//使用sort排序定义从大到小
{
	return a>b;
}

3. 时间复杂度

n*log2(n)

二、具体示例

[USACO07DEC]Bookshelf B

题目链接:(https://www.luogu.com.cn/problem/P2676)

题目描述

Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留有一点空间。

所有 N ( 1 ≤ N ≤ 20 , 000 ) N(1 \le N \le 20,000) N(1N20,000) 头奶牛都有一个确定的身高 H i ( 1 ≤ H i ≤ 10 , 000 ) H_i(1 \le H_i \le 10,000) Hi(1Hi10,000)。设所有奶牛身高的和为S。书架的高度为B,并且保证 1 ≤ B ≤ S < 2 , 000 , 000 , 007 1 \le B \le S < 2,000,000,007 1BS<2,000,000,007

为了够到比最高的那头奶牛还要高的书架顶,奶牛们不得不像演杂技一般,一头站在另一头的背上,叠成一座“奶牛塔”。当然,这个塔的高度,就是塔中所有奶牛的身高之和。为了往书架顶上放东西,所有奶牛的身高和必须不小于书架的高度。

显然,塔中的奶牛数目越多,整座塔就越不稳定,于是奶牛们希望在能够到书架顶的前提下,让塔中奶牛的数目尽量少。 现在,奶牛们找到了你,希望你帮她们计算这个最小的数目。

输入格式

  • 1 1 1 行: 2 个用空格隔开的整数: N N N B B B
  • 2 … N + 1 2\dots N+1 2N+1 行: 第 i + 1 i+1 i+1 行是 1 1 1 个整数: H i H_i Hi

输出格式

  • 1 1 1 行: 输出 1 1 1 个整数,即最少要多少头奶牛叠成塔,才能够到书架顶部

样例 #1

样例输入 #1

6 40
6
18
11
13
19
11

样例输出 #1

3

提示

输入说明:

一共有 6 6 6 头奶牛,书架的高度为 40 40 40,奶牛们的身高在 6 … 19 6\dots19 619之间。

输出说明:

一种只用 3 3 3 头奶牛就达到高度 40 40 40 的方法: 18 + 11 + 13 18+11+13 18+11+13。当然还有其他方法,在此不一一列出了。

代码示例

#include<iostream>
#include<algorithm>

using namespace std;

int n, m, sum;
int a[20100];

bool cmp(int x,int y){
    return x > y;
}

int main() {
    int count = 0;
    cin >> n >> m;
    
    for(int i = 0; i < n; i++) {
        cin >> a[i];
    }
    
    sort(a, a + n, cmp);
    
    int i = 0;
    while(sum < m) {		// 用贪心,将前面几个大的先拿去用
        sum += a[i];
        count++;
        i++;
    }
    
    cout << count << endl;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++的sort函数如何实现从大到小排序 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • CMake中if的使用

    CMake中的if命令用于有条件地执行一组命令 其格式如下 if
  • 判断字符串是否为回文串的Java实现方法(收藏自力扣)

    先把字符串转成字符数组 可以调用toCharArray 方法 public char toCharArray 将此字符串转换为一个新的字符数组 Returns 一种新分配的字符数组 其长度是该字符串的长度 其内容被初始化为包含由该字符串表示
  • 时间序列模型Prophet使用详细讲解

    之前我们已经讲过了如何在Windows系统下安装Python版本的Prophet 详细见这里 接下来的几个部分 我们说下如何使用Prophet 以此来体验下Prophet的丰富内容 内容会比较多 主要翻译自官方文档 教程中使用的数据集可在
  • DAP数据分析平台权限体系说明

    数据对于企业来说是非常重要的 所以产品的安全性需要有所保证 而权限分配就是一种保障方式 通过不同权限查看到不同的数据进行数据隔离 保障数据的安全性 DAP数据分析平台通过授权管理进行角色授权 配置授权 业务授权实现三权分立 不同的用户能看到
  • 后端解决跨域

    对于跨域 相信同学们都有所了解 前端的跨域的若干种方式 大家也都知道 什么 JSONP iframe domain 等等 但是我们今天的主题 不是前端跨域 而是后端跨域 一旦提及到跨域 就会想到同源策略 那我们就先来回顾跨域和同源策略 什么
  • upload-labs第五关 pass-05 大小写绕过

    六 pass 05 大小写绕过 源码 is upload false msg null if isset POST submit if file exists UPLOAD ADDR deny ext array php php5 php4
  • 封装浏览器外壳

    Net本身包含WebBrower控件 可惜内核是IE http www cnblogs com M Silencer p 5846494 html 参考以上文章 通过一些控件可以再窗体中嵌入webkit内核的浏览器 目前在尝试CefShar
  • 快手广告推广效果由哪些因素决定?快手广告能满足哪些推广目标?

    快手广告用户与你的行业用户一致快手用户为三线城市 95后年轻用户为主 同时其用户人群也在大城市进行渗透 那么快手广告推广效果由哪些因素决定 快手广告能满足哪些推广目标 一 快手广告推广效果由哪些因素决定 1 广告的推广效果可以分为曝光效果
  • 大数据代表技术:Hadoop、Spark、Flink、Beam

    大数据代表技术 Hadoop Spark Flink Beam Hadoop 从2005年到2015年 说到大数据都是讲hadoop Hadoop是一整套的技术框架 不是一个单一软件 它是一个生态系统 Hadoop有两大核心 第一个是它解决
  • ubuntu系统安装pangolin

    ubuntu 安装 pangolin 1 安装pangolin依赖项以及安装过程中用到的工具 2 创建安装目录 3 下载pangolin源文件 4 安装pangolin 1 安装pangolin依赖项以及安装过程中用到的工具 ctrl al
  • LeetCode_BinaryTree_1129. Shortest Path with Alternating Colors 颜色交替的最短路径【BFS求最短路径】【java】【中等】

    一 题目描述 英文描述 You are given an integer n the number of nodes in a directed graph where the nodes are labeled from 0 to n 1
  • Vue面试题(一)

    目录 一 vue2和vue3的区别 二 mixin混入对象 三 hooks 特点 四 keep alive 五 生命周期 六 el template render 七 vue router 有哪几种导航钩子 路由守卫 八 HTTP和TCP的
  • CVPR‘2023 即插即用系列!

    Title BiFormer Vision Transformer with Bi Level Routing Attention Paper https arxiv org pdf 2303 08810 pdf Code https gi
  • 电商入门_仓库管理系统wms

    在2010电商WMS第一个阶段 那时的双十一就是各个仓库的噩梦 库区不够用 WMS系统瘫痪 拣货人员都被埋在商品里 往往半个月之后才能发出订单 那时京东的亚洲一号仓刚开始立项 大家还半信半疑 大部分电商库房后台还是处于小作坊状况 纯粹靠人工
  • react动态给组件添加事件_React实战—组件行为:React中的事件(4)

    网页是组件构成的 组件是一系列标签形成的单一功能 所以考虑组件无非也就三件事 结构 表现 和行为 结构JSX搞定了 当然JSX不仅仅干这个 表现是CSS的事儿 我们重点说下行为 也就是事件和钩子 事件好说 就是户干了啥事儿 然后有什么样的相
  • Fiddler / Charles - 夜神模拟器证书安装App抓包

    Fiddler Charles 夜神模拟器证书安装App抓包 文章目录 Fiddler Charles 夜神模拟器证书安装App抓包 前言 一 软件安装 1 Openssl安装 1 1下载安装 1 2配置环境变量 1 3查看openssl版
  • 基于AWS的云服务架构最佳实践 #CSDN博文精选# #IT# #云服务实践#

    大家好 小C将继续与你们见面 带来精选的CSDN博文 在这里 你将收获 将系统化学习理论运用于实践 系统学习IT技术 学习内容涵盖数据库 软件测试 主流框架 领域驱动设计和第三方生态等 离全栈工程师更近一步 精心整理的CSDN技术大咖博文
  • Java版工程项目管理系统源码 工程项目源码

    数 据 库 MySQL 开发语言 Java 开发工具 MyEclipse 源码类型 WebForm 以甲方项目管理为中心 包括项目启动 计划 执行 控制与收尾阶段的全生命周期管理 并对范围 预算 进度 质量 资源 风险等管理要素进行控制与预
  • 06FFMPEG的AVCodecContext结构体分析

    06FFMPEG的AVCodecContext结构体分析 概述 该结构体位于libavcodec库中的avcodec h中 1 AVCodecContext编解码上下文结构体 位于libavcodec库里 AVFormatContext A
  • C++的sort函数如何实现从大到小排序

    C 的sort函数如何实现从大到小排序 一 sort的基本用法 1 所在的头文件 2 包含的参数 3 时间复杂度 二 具体示例 USACO07DEC Bookshelf B 题目描述 输入格式 输出格式 样例 1 样例输入 1 样例输出 1