题目连接: 比奇堡的汉堡节

题目:

比奇堡一年一度的汉堡节到了,身为比奇堡皇家指定汉堡王牌店铺”蟹堡王”的独一无二(emm,好像只有一个=.=)的厨师海绵宝宝超超超超…级开心,因为做汉堡是他最喜欢做的事(第二喜欢抓海母.),如果可以,海绵宝宝想做1万亿个汉堡给大家分享,但是抠门的蟹老板只为他提供一定的食材和一定的money供他买食材做汉堡,海绵宝宝很无奈(>.<), 只能妥协。
抠门的蟹老板只提供了三种食材’B’(bread),’S’(sausage),’C’(cheese)也限制海绵宝宝只能买这三种食材,海绵宝宝OZR蟹老板也无动于衷,还好!有”蟹黄堡”秘方!但海绵宝宝是专一的,只做一种汉堡,如果一种汉堡做法是”BSCBS ”,说明汉堡从下到上由是bread,sausage,cheese,bread,sausage组成的,也就是说做一个汉堡需要2个B,2个S,1个C。
当然,海绵宝宝想充分利用money去买那三种食材(只要钱够,多少数量都可以),使得他能做最多的汉堡。

Input
多组输入。
第一行输入是汉堡的种类
第二行包含3个数字,分别是nb,ns,nc(1<=nb,ns,nc <=100)------分别是B,S,C的数量
第三行包含3个数字,分别是Pb,Ps,Pc(1<=Pb,Ps,Pc<=100)-------分别是B,S,C的单位价格
第四行包含1个数字,r(1<=r<=1e12)--------表示蟹老板给海绵宝宝的钱

Output
海绵宝宝想做最多数量的”蟹黄堡”,需要请你帮忙,你觉得在充分利用给定食材和钱的前提下,海绵宝宝最多可以做几个”蟹黄堡”,请输出。
注意数据范围哦。

Examples
Input
BBBSSC
6 4 1
1 2 3
4
Output
2
Input
BBC
1 10 1
1 10 1
21
Output
7
Input
BSC
1 1 1
1 1 3
1000000000000
Output
200000000001

解题思路:

本题由于r给的数据最大值为1e12, 单独的线性暴力一定会被T, 所以采用二分的思想进行时间复杂度优化.
再运用贪心的思维, 把每次符合要求的局部最优解都进行记录, 最终可以得到答案

AC代码:

#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#define ll long long
using namespace std;
int main(void)
{string a; cin >> a;ll nb = 0, ns = 0, nc = 0;//汉堡需要的BSCfor (int i = 0; i < a.length(); i++) {if (a[i] == 'B') nb++;else if (a[i] == 'S') ns++;else nc++;}ll b, s, c; cin >> b >> s >> c;//拥有的bscll pb, ps, pc; cin >> pb >> ps >> pc;//bsc的价格ll money; cin >> money;ll left = 0, right = (ll)1E14;//上限可以假设任意大于1E12的数据ll ans = 0;/* 开始二分 */while (left <= right) {ll mid = (left + right) / 2;//假设做mid个汉堡为所求ll cb = mid * nb - b, cs = mid * ns - s, cc = mid * nc - c;//分别算出差的BSC//如果差的有小于0的, 表示当前项是足够的, 应记为0 (非常重要!!!)if (cb < 0) cb = 0;if (cs < 0) cs = 0;if (cc < 0) cc = 0;ll nm = cb * pb + cs * ps + cc * pc;//计算出需要的钱if (nm <= money) ans = mid;//记录局部最优解if (nm > money) right = mid - 1;else left = mid + 1;}cout << ans << endl;return 0;
}

这个题特别注意的应该也就是差的BSC小于0的情况了. 如果小于0了 你不把他归为0, 则会导致钱更多了, 从而导致答案错误, 当时在这里WA了很久.

END

Hamburgers(二分+贪心)(又名: 比奇堡的汉堡节)相关推荐

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

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

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

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

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

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

  4. BZOJ2525 [Poi2011]Dynamite 【二分 + 贪心】

    题目链接 BZOJ2525 题解 就是要求所有有炸弹的点到点燃点距离最大值最小 显然二分答案距离\(D\) 然后按深度排序,贪心点燃当前没覆盖的深度最深的点往上第\(D\)层的点 每覆盖一个点要标记其 ...

  5. hdu5248序列变换(二分+贪心)基础题

    题意(中文的直接粘题意吧)                                                                                        ...

  6. 外卖(food) 洛谷4040宅男计划 三分套二分贪心

    food评测传送门 [题目描述] 叫外卖是一个技术活,宅男宅女们一直面对着一个很大的矛盾,如何以有限的金钱在宿舍宅得尽量久.     外卖店一共有 N 种食物,每种食物有固定的价钱 Pi 与保质期 S ...

  7. LA 4254 Processor 处理器 【二分 贪心 优先队列】

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21663 二分: 最大值最小的问题通过二分来求解.对处理器速度进行 ...

  8. hdu 5248(二分+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248 解题思路:这道题我原本的思路是动态规划,结果看到数很大,结果放弃了.然后想到二分,思路是对的,只 ...

  9. poj3111 选取物品(二分+贪心)

    题目传送门 题意就是,n个物品,从中选取k个,要按照那个公式所取的值最大. 思路:最大化平均值的时候首先想到的就是二分, 我们设G(x) 为单位的重量不小于X, 我们的目标就是要找到满足条件的最大的X ...

最新文章

  1. 关于数组名与指针的相互转换
  2. 锁的用处及脏读、不可重复读和幻觉读的概念
  3. 拜读了《婆媳关系好坏取决于老公》一文,看似有道理,细读感觉其实应该不是那么回事...
  4. python词云有什么用_如何用Python实现词云效果
  5. Okhttp3中设置超时的方法
  6. centos7配网卡_centos7配置网卡
  7. Unity C# 设计模式(一)单例模式
  8. 再问数据中台 - 企业数据中台的团队如何构建?绩效如何评价?
  9. bzoj 4129 Haruna’s Breakfast 树上莫队
  10. oracle函数 power(x,y)
  11. Netty笔记(七)ChannelHandlers and Codes 整合
  12. Windows上Dos命令操作文件及文件夹
  13. Python实现快速大文件比较代码解析
  14. HttpClientHelper
  15. 关于Matplotlib作图时中文字体无法显示问题
  16. 串口termios结构体的详细设置
  17. 用JS 控制文字两行 ,展示省略号(兼容谷歌 IE等各大浏览器)
  18. Algorithm:数学建模大赛(CUMCM/NPMCM)之NPMCM全国研究生数学建模竞赛(NPMCM)历年试题集合、试题库、学习网站推荐之详细攻略
  19. pull时出现错误及解决方法
  20. 发那科机器人回原位置先上升_机器人小知识 | 发那科机器人位置信息修改介绍...

热门文章

  1. Java 对 PDF 文件进行电子签章 如何生成PKCS12证书
  2. 了解这些才能进行短视频app制作
  3. 单点登录、统一认证解决方案
  4. dd linux命令 分区,使用dd命令备份Linux分区
  5. 内核版本与发行版本(CentOS Ubuntu)的对应关系
  6. 17、ModuleNotFoundError: No module named ‘pywin32_bootstrap‘
  7. mMySQL中触发器和游标的介绍与使用L8.0.23免安装版配置详细教程 msi安装超详细教程
  8. WPS表格设定格式简单输入数学单位如平方米、立方米等
  9. cropperjs裁剪上传头像使用方法
  10. 简单的密码题 聪明的小羊