题目链接:点击查看

题目大意:给出n个人,每人有元钱,再给出m辆自行车,每辆车需要元钱才能骑,现在n个人有a元的共享资金,问最多可以骑多少量自行车,并且使每个人的花费总和最小(即尽可能多的使用共享资金)

题目分析:还是英语不好啊。。一开始以为题意是让求最小骑多少量自行车和最多骑多少量自行车,然后想了半天也想不出来,去网上看了题解才发现题目问的是最多自行车和最小花费。。这样就成了一个二分大水题了,先用贪心的思想将人的钱和自行车的钱升序排序,然后二分一下自行车的数量就行了,判断条件就是让前mid个自行车和后mid个人的钱一一比较,若自行车的钱比人的钱要多就记录一下缺多少钱,最后和共享资金比较一下就行了

最后还要求一个最小花费,那么我们就将前mid个自行车的花销累加一下,然后减去共享资金a元就是答案了,注意有个小细节,就是这个答案不能是负数,特判一下就行了

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;int b[N],p[N];int main()
{
//  freopen("input.txt","r",stdin);int n,m;LL a;scanf("%d%d%lld",&n,&m,&a);for(int i=1;i<=n;i++)scanf("%d",b+i);for(int i=1;i<=m;i++)scanf("%d",p+i);sort(b+1,b+1+n);sort(p+1,p+1+m);int l=0,r=min(n,m);int ans=0;while(l<=r){int mid=l+r>>1;LL sum=0;for(int i=0;i<mid;i++)if(p[mid-i]>b[n-i])sum+=p[mid-i]-b[n-i];if(sum<=a){ans=mid;l=mid+1;}elser=mid-1;}LL sum=0;for(int i=1;i<=ans;i++)sum+=p[i];sum=max(0LL,sum-a);printf("%d %lld\n",ans,sum);return 0;
}

CodeForces - 363D Renting Bikes(二分+贪心)相关推荐

  1. CodeForces - 507E Breaking Good(二分+贪心)

    题目链接:点击查看 题目大意:给出 n 个竹子,初始时高度为 h[ i ],接下来每一天每个竹子都会长高 a[ i ] 个单位的高度,每一天可以砍 k 次竹子(可以是同一个),每次可以砍掉 p 个单位 ...

  2. 蒟蒻的第一篇博客CF1041C Coffee Break(二分+贪心+set)

    CF1041C Coffee Break(二分+贪心+set) 描述 Recently Monocarp got a job. His working day lasts exactly mm min ...

  3. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  4. 洛谷P1182 数列分段 Section II(二分+贪心)

    题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N​,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...

  5. CodeForces - 551C GukiZ hates Boxes(二分+贪心)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a,表示每个位置的障碍物数量,现在有 m 个学生可以来搬走障碍物,每一秒钟可以做出的行为如下: 从位置 i 移动到位置 i + 1 从当前位置 ...

  6. CodeForces 670D2 Magic Powder - 2(二分+贪心)

    http://codeforces.com/contest/670/problem/D2 简单的二分,二分所有可以做的饼干数,然后遍历就可以啦 #include <iostream> #i ...

  7. Codeforces 671E Organizing a Race (贪心、线段树)

    题目链接 https://codeforces.com/contest/671/problem/E 题解 完全不会做--基本是抄lk的代码 ruogu的题解: https://www.luogu.co ...

  8. CodeForces - 1538G Gift Set(二分)

    题目链接:点击查看 题目大意:给出 a,b,x,ya,b,x,ya,b,x,y,分别表示有 aaa 个蓝色糖果和 bbb 和红色糖果,现在有两种打包方式: xxx 个蓝色糖果和 yyy 个红色糖果 y ...

  9. [USACO16JAN]Angry Cows S[二分+贪心]

    题意:Bessie 设计了一款新游戏:Angry Cows.在这个游戏中,玩家发射奶牛,每头奶牛落地时引爆一定范围内的干草.游戏的目标是使用一组奶牛引爆所有干草. N 捆干草排列在数轴上的不同位置.第 ...

最新文章

  1. linux如何编译php扩展,linux环境下编译php扩展
  2. uml 类图_UML-类图
  3. 了解这些坑,再也不会出现诡异的BUG了~
  4. centos的服务管理
  5. PADS无模命令总结
  6. php 获取 参数名和参数值,如何快速的获得url地址中参数名和参数值(在看PHP手册的时候无意间看见这两个函数,猜想能不能搭配使用。)...
  7. RabbitMQ八:交换机类型Exchange Types--Topic介绍
  8. dz论坛自定义html,关于diy模块中的自定义html
  9. Turtle(7)制作简单动画
  10. 2019-9-9,中兴笔试
  11. 计算机组成原理微指令课程设计,计算机组成原理课程设计(微程序设计) New.doc...
  12. oracle 罗马数字处理,阿拉伯数字转罗马数字(Roman Numeral Converter)
  13. 交叉线和直通线的区别和用途
  14. 写SQL的21个好习惯
  15. db2建立表空间 linux,DB2实验教程:创建数据库/表空间
  16. 大数据职业理解_3大数据职业职位描述及其职业要求
  17. python 如果你的年龄大于18_5分钟学会Python的if条件判断语句
  18. 【CSS】静态螺纹进度条和静态流程布局
  19. 字符串和字符串标准库
  20. 2020年软考初级网络管理员备考指南

热门文章

  1. ArrayBlockingQueue原理分析
  2. MyBatis创建SqlSession-有没有更好的拿到SqlSessionTemplate 的方法?
  3. MyBatis 源码解读-settingsElement(settings)
  4. 使用JUnit 5 执行条件和并发测试
  5. Java连接Redis-Jedis简介
  6. 原始jdbc操作的分析
  7. 摆放家具-家具类以及创建家具对象
  8. 函数的返回值-改造求和函数
  9. 全国计算机一级d类考试内容,全国计算机一级考试WPS office复习题及答案2017
  10. AES128/ECB/PKCS5Padding 的实现