当前位置: 首页 > news >正文

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;

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

相关文章:

  • 22 3GPP在SHF频段基于中继的5G高速列车场景中的标准化
  • 数智金融技术峰会|数新网络受邀分享《金融信创湖仓一体数据平台架构实践》,敬请期待
  • OpenCV实现手势音量控制
  • 鸿蒙开发基本概念
  • 关于时区处理策略
  • Unity中Shader旋转矩阵(二维旋转矩阵)
  • c语言:指针作为参数传递
  • react v-18父组件调用子组件的方法和数据
  • docker资源限制
  • java常用密码简介及代码实现
  • 关于折线回归
  • SAP常用的TCODE---BASIS
  • 【2023年网络安全优秀创新成果大赛专刊】银行数据安全解决方案(天空卫士)
  • Codeforces Round 916 (Div. 3)(E:贪心 F贪心dfs G tarjan+topsort +线段树优化建图)
  • 根据IP查找城市 (80%用例)C卷
  • 30秒的PHP代码片段(1)数组 - Array
  • Apache的基本使用
  • Cumulo 的 ClojureScript 模块已经成型
  • Elasticsearch 参考指南(升级前重新索引)
  • HTTP 简介
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java读取Properties文件的六种方法
  • Java多线程(4):使用线程池执行定时任务
  • js数组之filter
  • leetcode46 Permutation 排列组合
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • node-glob通配符
  • python3 使用 asyncio 代替线程
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • springMvc学习笔记(2)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue学习第二天
  • 阿里云购买磁盘后挂载
  • 百度地图API标注+时间轴组件
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 理清楚Vue的结构
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 一道闭包题引发的思考
  • 用element的upload组件实现多图片上传和压缩
  • ​卜东波研究员:高观点下的少儿计算思维
  • #NOIP 2014# day.2 T2 寻找道路
  • (3)nginx 配置(nginx.conf)
  • (C语言)二分查找 超详细
  • (NSDate) 时间 (time )比较
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (四)汇编语言——简单程序
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)Windows2003安全设置/维护
  • ./configure、make、make install 命令
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET运行机制
  • @在php中起什么作用?
  • [1525]字符统计2 (哈希)SDUT