codeforces363D——Renting Bikes(二分,贪心)
来源:互联网 发布:dwg是什么软件 编辑:程序博客网 时间:2024/05/01 14:30
又是一道典型的二分问题
有n个人想要去租单车,一共有m辆单车,首先一共有a元的公款,每个人还有自己的私款。
私款只能用在自己的单车上,问你一共最多能租下多少辆单车。
首先把单车价格和每个人的钱排序。
最大化可行解,二分找出最多能租的单车数目。
把价格最低的那些单车相加,减去公款数目就是最小花费。
#include <algorithm>#include <cstring>#include <cstdio>#include <iostream>using namespace std;const int MAXN=100010;int b[MAXN];int p[MAXN];bool C(int x,int n,int m,int a){ int i=n-x,j=0;for(;i<n&&j<m;i++,j++){if(b[i]<p[j]){a-=(p[j]-b[i]);}if(a<0) break;}if(a>=0)return true;elsereturn false;}int main(){int n,m,a;scanf("%d%d%d",&n,&m,&a);for(int i=0;i<n;i++){scanf("%d",b+i);}for(int i=0;i<m;i++){scanf("%d",p+i);}sort(p,p+m);sort(b,b+n);int lb=0,ub=min(n+1,m+1);while(ub-lb>1){int mid=(lb+ub)>>1;if(C(mid,n,m,a))lb=mid;elseub=mid;}int r=lb;if(r==0){printf("0 0\n");return 0;}long long sum=0;for(int i=0;i<r;i++){sum+=p[i];}printf("%d %I64d\n",r,sum>a?sum-a:0);}
0 0
- codeforces363D——Renting Bikes(二分,贪心)
- Renting Bikes(二分+贪心)
- CodeForces 363D.Renting Bikes(二分+贪心)
- Codeforces 363D Renting Bikes【二分+贪心】
- CF 363D. Renting Bikes 贪心+二分
- Renting Bikes 二分
- CodeForces 363D Renting Bikes (二分+贪心)
- cf#211-D. Renting Bikes-二分
- Renting Bikes
- Renting Bikes
- D. Renting Bikes(CodeFroce)
- Code forces363D Renting Bikes
- Renting Bikes CodeForces
- CodeForces 363D - Renting Bikes
- CodeForces 363D Renting Bikes
- Codeforces 363D Renting Bikes
- Codeforces Round #211 (Div. 2)-D. Renting Bikes,二分!感谢队友出思路!
- Codeforces Round #211 (Div. 2)D. Renting Bikes(二分,想法题,好题)
- [iOS Swift3.0] 定位二维码+绘制定位框+简单使用UIBezierPath和CAShapeLayer
- 金融行业风控概念及分析
- actor中!(tell)与forward的区别
- 构造方法,static,文档
- 动态规划
- codeforces363D——Renting Bikes(二分,贪心)
- 提高安卓APP开发效率、管理代码的架子(一):BaseActivity&BaseApplication
- IDE常用快捷键——微信小程序
- RocketMQ简介
- 图像小波分解示意图
- 数据结构-串(字符串)
- oracle根据某个字段去重查询实例
- Failed to open zip file. Gradle's dependency cache may be corrupt
- jQuery页面加载初始化常用的三种方法