Peter算法小课堂—贪心与二分

太戈编程655题

题目描述:
有n辆车大甩卖,第i辆车售价a[i]元。有m个人带着现金来申请购买,第i个到现场的人带的现金为b[i]元,只能买价格不超过其现金额的车子。你是大卖场总经理,希望将车和买家尽量多地进行一对一配对,请问最多卖出多少辆车?

贪心

贪心法模板:

比如说:每次挑最便宜的车卖给贫穷的人,……

相信大家第一个想到的思路就是二重for循环,第一层int i=1;i<=m;i++,第二层int j=1;j<=n;j++,时间复杂度O(n^2)。但是一看数据规模,n,m<=200000,也就是运行40000000000,四百亿,几乎不可能。这一下子,大家就想到了传说中的“蠕动区间”。代码来咯,

#include <bits/stdc++.h>
using namespace std;
const int N=200009;
int n,m,a[N],b[N];
int main(){freopen("car2.in","r",stdin);freopen("car2.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=m;i++) cin>>b[i];sort(a+1,a+1+n);sort(b+1,b+1+m);int cnt=0,i=1,j=1;while(i<=n&&j<=m){if(a[i]<=b[j]){i++;j++;cnt++;}else j++;}cout<<cnt<<endl;return 0;
}

太戈编程656题

题目描述:
有n辆车大甩卖,第i辆车售价a[i]元。有m个人带着现金来申请购买,第i个到现场的人带的现金为b[i]元。你是大卖场总经理,可以将车和买家自由配对。如果买家的现金低于配对车的售价时,你有权力借钱给买家,但是总的借款额度不可以超过f。注意:买家之间不会互相借钱。请问通过你的配对和借款,剩下没买到车的人最少有几人?

二分+贪心

思路:要让没买到车的人最少,相当于要求买到车的人最多。二分枚举答案x,OK函数判断卖出x辆车是否可行(最优化问题→可行性问题),而判断的方法就要用到贪心

bool OK(int x){int sum=0;for(int i=0;i<=x;i++){if(a[i]>b[m-x+i]) sum+=a[i]-b[m-x+i];if(sum>f) return 0; }return 1;
}

 

int main(){freopen("car3.in","r",stdin);freopen("car3.out","w",stdout);cin>>n>>m>>f;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<m;i++) cin>>b[i];sort(a,a+n);sort(b,b+m);int l=0,r=min(n,m),ans=0;while(l<=r){int mid=l+(r-l)/2;if(OK(mid)) ans=mid,l=mid+1;else r=mid-1;}cout<<m-ans<<endl;return 0;
}

太戈编程1662题

自己独立思考……

cin>>n>>d;
for(int i=1;i<=n;i++) cin>>x[i];
sort(x+1,x+n+1);
int cnt=0;
for(int i=1;j=2;i<=n-1;i++){while(j<=n&&x[j]-x[i]<d) j++;cnt+=j-i-1;
}
cout<<cnt<<endl;

希望这些对大家有用,三连必回

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一下gradle编译问题

由于C盘爆满,删除了一些文件,没注意把.gradle里的文件也给删了,结果就是编译报错. 但是studio啥也没提示,看了log才知道是jar包没了,但是呢又不自动下载. 我的做法是直接删除.gradle\caches文件夹,但是这个代价太高了 后来我发现是把 .gradle\caches\modules-2\files-2.1\org…

2312llvm,06即时编译

即时编译器 LLVM即时(即时)编译器是基于函数的动态翻译引擎. 术语来自即时制造,即工厂按需制造或购买物资,而不放入仓库.在编译过程中,该比喻也很合适,因为即时编译器不会存储二进制程序到磁盘,而是在需要时才开始编译. 即时策略的优势,在于知道运行程序的精确的机器和微架构…

重温经典struts1之国际化(I18N)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 拿Google网站来举例&#xff0c;在世界上不同国家和地区&#xff0c;登陆Google网站&#xff0c;网站上都会显示本国家语言&#xff0c;它是怎么做到的&#xff0c;就是…

华为云Windows Server服务器下,Node使用pm2-logrotate分割pm2日志,解决pm2日志内存占用过高的问题。

一、简介 PM2 是一个守护进程管理器&#xff0c;它将帮助您管理和保持您的应用程序在线。PM2 入门很简单&#xff0c;它以简单直观的 CLI 形式提供&#xff0c;可通过 NPM 安装。官网地址&#xff1a;https://pm2.keymetrics.io/ 二、问题&#xff1a;pm2日志内存占用过高&am…

【Linux】编辑、查看和搜索文件

大多数 Linux 发行版不包含真正的 vi;而是自带一款高级替代版本&#xff0c;叫做 vim(它是“vi improved”的简写)由 Bram Moolenaar 开发的&#xff0c;vim 相对于传统的 Unix vi 来说&#xff0c;取得了实质性进步。 启动和退出 vim 使用vim可以启动&#xff0c;如命令行输…

SpringBoot Elasticsearch全文搜索

文章目录 概念全文搜索相关技术Elasticsearch概念近实时索引类型文档分片(Shard)和副本(Replica) 下载启用SpringBoot整合引入依赖创建文档类创建资源库测试文件初始化数据创建控制器 问题参考 概念 全文搜索&#xff08;检索&#xff09;&#xff0c;工作原理&#xff1a;计算…

电子合同在物流运输中的场景应用

物流运输行业发展迅速&#xff0c;形成了采购、运输、仓储、配送、代理等全面的产业体系&#xff0c;在业务的开展过程中&#xff0c;各类纸质文件的签章管理如承运协议、运输合同、电子回单、入仓及出仓单据、融资保理协议、代理合作协议、商家入驻协议、员工劳动合同等&#…

Android 实现热点开机后自动开启

Android 实现热点开机后自动开启 文章目录 Android 实现热点开机后自动开启一、前言二、实现方式1、在 WifiServiceImpl 启动热点2、在开机广播中开启热点 三、其他1、热点开机自启动方式总结2、热点开启流程3、热点启动相关日志4、其他热点相关知识分享 一、前言 Android 热点…

任天堂,steam游戏机通过type-c给VR投屏与PD快速充电的方案 三type-c口投屏转接器

游戏手柄这个概念&#xff0c;最早要追溯到二十年前玩FC游戏的时候&#xff0c;那时候超级玛丽成为了许多人童年里难忘的回忆&#xff0c;虽然长大了才知道超级玛丽是翻译错误&#xff0c;应该是任天堂的超级马里奥&#xff0c;不过这并不影响大家对他的喜爱。 当时FC家用机手柄…

中国社科院与新加坡新跃社科大联合培养博士—未来是我们自己创造的

没有任何东西能像大胆的幻想那样促进未来的创立&#xff0c;没有任何东西能像扎实的实践那样实现幻想的未来&#xff0c;今天的幻想加实践就是明天的现实&#xff01;中国社科大-新加坡新跃社科大学联合培养工商管理博士&#xff0c;期待与您一起实现我们的未来。 人的一生其实…

SAP系统标准表之间的关联关系对应

SAP系统标准表之间的关联关系对应

指标体系构建-02-从0开始,梳理数据指标体系

指标体系构建-02-从0开始&#xff0c;梳理数据指标体系 一个例子&#xff0c;看懂并列式指标梳理 并列式指标体系&#xff0c;一般用于&#xff1a;描述个体情况 当我们想从几个不同角度&#xff0c;描述问题的时候&#xff0c;就需要并列关系 举个栗子&#x1f330;&#xf…

阿里云 ACK One 新特性:多集群网关,帮您快速构建同城容灾系统

云布道师 近日&#xff0c;阿里云分布式云容器平台 ACK One[1]发布“多集群网关”[2]&#xff08;ACK One Multi-cluster Gateways&#xff09;新特性&#xff0c;这是 ACK One 面向多云、多集群场景提供的云原生网关&#xff0c;用于对多集群南北向流量进行统一管理。 基于 …

redis 从0到1完整学习 (三):redis 数据结构

文章目录 0. 概述0.1 简要介绍 1. Strings1.1 常用命令 2 Lists2.1 常用命令 3. Sets3.1 常用命令 4. Hashes4.1 常用命令 5. Sorted sets5.1 常用命令 6. Streams6.1 常用命令 7. 参考 0. 概述 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&…

SpringBoot+Redis的Bloom过滤器

1.保姆级Linux安装Redis ①把redis.tar.gz下载到linux中&#xff0c;并用命令tar -zxvf安装 ②安装完成进入目录输入make进行编译&#xff0c;编译完成后输入make install 进行安装 ③创建两个文件夹mkdir bin mkdir etc 将redis目录下的redis.conf文件移动到etc文件中&…

普通相机标定——OpenCV函数讲解(下)

cv::projectPoints void cv::projectPoints(InputArray objectPoints, InputArray rvec, InputArray tvec, InputArray cameraMatrix, InputArray distCoeffs, OutputArray imagePoints, OutputArray jacobian = noArray(), double aspectRatio = 0 ) /** @brief 将世界坐标系中…

Modbus-TCP数据帧

Modbus-TCP基于4种报文类型 MODBUS 请求是客户机在网络上发送用来启动事务处理的报文MODBUS 指示是服务端接收的请求报文MODBUS 响应是服务器发送的响应信息MODBUS 证实是在客户端接收的响应信息 Modbus-TCP报文: 报文头MBAP MBAP为报文头&#xff0c;长度为7字节&#xff0c…

设计模式(三)-结构型模式(6)-享元模式

一、为何需要享元模式&#xff08;Flyweight&#xff09;? 假如在网页中渲染这样的一个画面&#xff1a;大小不一的星星铺满了整个画布&#xff0c;并且都在不断的进行移动闪烁着。一批星星消失了&#xff0c;另一批又从另一边缘处出现。 要实现这样的渲染效果&#xff0c;在…

DshanMCU-R128s2 配置引脚复用

本文中的约定 描述 GPIO 配置的形式&#xff1a;Port:端口 组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>文中的 <X>0,1,2,3,4,5…..&#xff0c;如 twi0&#xff0c;twi1….&#xff1b;uart0&#xff0c;uart1….。文中的 {PRO…

『居善地』接口测试 — 20.Mock功能介绍

1、Mock功能介绍 各个业务系统都会关联多个三方系统接口调用&#xff0c;在测试过程中第三方业务存在不能及时提供接口调用&#xff0c;这时就需要用到我们的mock服务了。 Mock的本质在于模拟三方业务接口的返回&#xff0c;来满足自身的测试功能&#xff0c;快速完成测试任务…