cf#211-D. Renting Bikes-二分

博客详细介绍了Codeforces上的D. Renting Bikes问题,探讨了如何使用二分搜索法来解决这个问题。在n个人和m辆车的情况下,寻找最多能租多少辆车的同时,使得个人花费最小。通过枚举和二分查找确定最优解,计算最少的个人花费。
摘要由CSDN通过智能技术生成

http://codeforces.com/problemset/problem/363/D

题意:

n个人,每个人b[i]块钱

m辆车,每辆车租金p[i]块钱

A,共用资金

共用资金可以给任何人租单车,但是个人的钱只能给自己用

每个人最多买一辆单车,


假设最多能买R辆车,求出R

在买R辆车的前提下,尽可能少用个人的钱,输出这个最少的个人花费S


煞笔贪心了一发。。。

显然直接枚举答案即可,Left=0,Right=min(n,m)

然后当能买X辆车时,我们让最有钱的X个人去买最便宜的X辆车,再加上共用资金,如果能买则OK,否则NOT

二分得到答案R

得到答案R后,要花最少钱肯定是买最便宜的R辆车啦。。。。sum=p[1]~p[R],

A》sum则 个人花费为0,否则为 sum-A

#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
#include <queue>
#include <map>
#include <set>
#include <vector>
using namespace std;

__int64 b[100005];
__int64 p[100005]; 
__int64 tmp[100005];
__in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值