贪心算法的思路和典型例题

2023-09-16 14:12:44

一、贪心算法的思想

贪心算法是一种求解问题时,总是做出在当前看来是最好的选择,不从整体最优上加以考虑的算法。

二.用贪心算法的解题策略

其基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。贪心算法的关键在于贪心策略的选择,而不是对所有问题都能得到整体最优解。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解中,直到把所有数据枚举完,或者不能再添加算法停止。”

三典型题 

第五维度

零维是点,点动成线;

一维是线,线动成面;

二维是面,面动成体;

三维是体,体动成史;

四维是史,史动????

现在人类企图理解第五维度。

而小度现在是第五维度的一位智者。一天,小度发现人类的许多科学家在试图理解第五维度,人类是四维生物,若是他们理解了第五维度,很可能也会到来第五维度的空间,这显然是小度不愿意看到的(毕竟哪里都有人口数量的问题….)所以小度希望他们尽可能晚的理解第五维度,因此,小度用更高维度的视角把所有人类中在理解第五维的科学家都看到了,而这些科学家的智商会不一样,所以他们的理解速度 Vi​ 也会不一样;并且,他们开始理解的时间点 Si​ 也不一样。理解速度 Vi​ 描述为每过单位时间可获得 Vi​ 个单位理解力,也就是说在 Si​+1 的时间点该科学家会第一次贡献 Vi​ 的理解力。我们定义理解力总数超过m 时理解了第五维度。 小度因为维度更高,可以使用时间悖论来给人类一次重大的打击,小度可以让任意一位科学家在任意一个时间点消失,所以他接下来的理解不会继续;而且人类不会记得他,所以他之前的贡献会消失。因为小度能力有限,所以小度只能使用一次暂时悖论。

现在求在尽可能晚的情况下,人类理解第五维度的最早时间点。

时间点初始为00,但显然,没有科学家能够在 00 时刻有贡献。

格式

输入格式:

第一行给出一个整数 n 和一个整数 m ,表示有 n 个科学家,在理解力总数超过 m 时理解了第五维度;
第二至 n+1 行:每行两个整数Si​ 和 Vi​;
对于 100% 的数据:1≤n≤10^5,m≤2∗10^9;
对于 100% 的数据:00≤Si​≤2∗10^9,0≤Vi​≤10^3。

输出格式:

一行,包含一个整数 T 表示在尽可能晚的情况下,人类理解第五维度的最早时间点。
若是人类永远无法理解第五维度,则输出-1。

 

题解

 

#include<bits/stdc++.h> 

using namespace std;
long long s[100000],v[100000],n,m;
bool check(int t){
    long long sum=0,maxn=-1;
    for(int i=1;i<=n;i++){
        if(t-s[i]<=0) continue;
        sum+=(t-s[i])*v[i];
        maxn=max(maxn,(t-s[i])*v[i]);
    }
    return sum-maxn>m;
}
int main( )
{
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>s[i]>>v[i];
    }
    int l=0,r=999999999;
    while(l<r){
        int mid=(l+r)/2;
        if(check(mid)) r=mid;
        else l=mid+1;
    }
    if(check(1)) cout<<l;
    else cout<<-1;
    return 0;
}

执行结果: 

更多推荐

潮力全开!泡泡玛特泰国首店盛大开业 限定单品点燃玩家热情

9月20日,泡泡玛特泰国首店盛大开业,吸引超千名粉丝现场排队,并在当地社交媒体引发热议。多家泰国主流媒体对此给予了关注和报道。该店坐落的尚泰世界购物中心(CentralWorld)位于泰国曼谷CBD商圈,是目前东南亚地区第二大购物中心,也是曼谷最大的百货购物中心。此前,泡泡玛特就宣布与全球最大的酒店、餐馆以及零售业集团

基于Java的设计模式-策略模式

策略模式就是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。基本概念策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们可以把这些封装成一个一个类,然后进行任意替换。策略模式存在三种角色:Strategy策略

PyCharm:No Python interpreter configured for the project

一、问题概述Your的Pycharm软件创建完项目后,结果无法运行,观察后,在Pycharm代码编辑区上面出现了这样的一个黄色条提示:NoPythoninterpreterconfiguredfortheproject【问题】在您的Python项目中无Python解释器,Pycharm只是一个python代码编辑器,而

LuatOS-SOC接口文档(air780E)--camera - codec - 多媒体-编解码

常量常量类型解释codec.MP3numberMP3格式codec.WAVnumberWAV格式codec.AMRnumberAMR-NB格式,一般意义上的AMRcodec.AMR_WBnumberAMR-WB格式codec.create(type,isDecoder)创建编解码用的codec参数传入值类型解释int多

ElasticSearch查询工具类分享

文章目录1.sql转ES工具2.KibanaVSPostman/ApiPost3.esjson转java4.ElasticSearch查询工具类esHelper5.在IDE控制台看到效果如图前言最近需要对ES数据进行分析和查询,之前因为在入门ES时没有好好做笔记和整理。1.sql转ES工具https://printlo

【MySQL从删库到跑路 | 基础第二篇】——谈谈SQL中的DML语句

个人主页:兜里有颗棉花糖欢迎点赞👍收藏✨留言✉加关注💓本文由兜里有颗棉花糖原创收录于专栏【MySQL学习专栏】🎈本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌前言前面我们已经讲解了SQL语句中的DDL语句。今天我们继续来学习SQL的DML语句。DML是数据操作语言,用于对库中表的数据操作进行

网络协议 — syslog 协议与 rsyslog 日志服务

目录文章目录目录syslog协议FacilitySeverityActionrsyslog软件架构rsyslogd服务rsyslog.confMODULESGLOBALDIRECTIVESRULS属性替代模板渲染过滤规则Filter模块队列远端日志文件服务器部署示例客户端服务器验证将日志存储至MySQL部署示例服务器验

ASO优化之如何给应用选择竞争对手

在选择竞争对手过程中,最常见的错误之一是没有考虑到自己的应用与同一行业的其他应用相比的范围。例如如果我们刚刚发布了一个应用程序,那么最好的办法就是专注于研究和自己同一级别的应用。1、研究主要关键词。首先选择5到10个可以定义产品类型的主要关键词,找到它们后,需要在GooglePlay、AppStore或其他应用商店内,

关于埋点上报

一、埋点上报结构包含哪些?埋点上报结构一般包含以下信息:事件名称:标识上报的是哪个事件,例如“注册成功”或“点击按钮”等。事件发生时间:记录事件发生的时间戳。用户ID:标识事件所属的用户。设备信息:记录设备类型、操作系统版本、应用版本等。地理位置:记录事件发生时的地理位置信息,可以是经纬度、城市名称等。其他自定义参数:

Vivado中增加源文件界面中各选项的解释

文章目录官方解释结论总结验证增加单个.v文件增加文件夹Copysourcesintoproject参考文献本文对Vivado中增加源文件界面AddorCreateDesignSources和AddorCreateSmulatonsources中的选项ScanandaddRTLincludefilesintoprojec

yolov5自动训练/预测-小白教程

文章目录引言一、配置参数设置1、数据参数配置2、模型训练参数配置3、模型预测参数配置二、一键训练/预测的sh介绍1、训练sh文件(train.sh)介绍2、预测sh文件(detect.sh)介绍三、本文训练main代码解读1、训练main函数解读2、数据加工与参数替换四、本文预测main代码解读1、训练main函数解读

热文推荐