CodeForces 371C Hamburgers(经典)【二分答案】
<题目链接>
题目大意:
给以一段字符串,其中只包含"BSC"这三个字符,现在有一定量免费的'B','S','C‘,然后如果想再买这三个字符,就要付出相应的价格。现在总共有tot元,问你最多能够组成几个这样的字符串。
解题分析:
开始还以为是模拟,但是看到总价的范围,达到了1e12,并且模拟的情况非常复杂。最后用二分答案求解。
#include <cstdio>
#include <cstring>
using namespace std; typedef long long ll;
const ll maxn = 1e12+100; //本题二分答案的上界
char str[110];
int base[4],price[4],ned[4];
ll tot; bool juge(ll x) { //判断是否能够买这么多汉堡,即验证二分答案的正确性
ll sum = 0;
for (int i = 1; i <=3; i++) {
if (base[i] < x*ned[i]) {
sum += (price[i] * (x*ned[i] - base[i]));
if(sum>tot)return false;
}
}
return true;
}
ll binary_ans(){
ll l=0,r=maxn,ans=0;
while(l<=r){
ll mid=(l+r)>>1;
if(juge(mid))ans=mid,l=mid+1;
else r=mid-1;
}return ans;
}
int main() {
scanf("%s",str);
memset(ned, 0, sizeof(ned));
for (int i = 0; i < strlen(str); i++) {
if (str[i] == 'B')ned[1]++;
if (str[i] == 'S')ned[2]++;
if (str[i] == 'C')ned[3]++;
}
for (int i = 1; i <= 3; i++)
scanf("%d", &base[i]);
for (int i = 1; i <= 3; i++)
scanf("%d", &price[i]);
scanf("%lld", &tot);
printf("%lld\n", binary_ans());
return 0;
}
CodeForces 371C Hamburgers(经典)【二分答案】的更多相关文章
- [Codeforces 1199C]MP3(离散化+二分答案)
[Codeforces 1199C]MP3(离散化+二分答案) 题面 给出一个长度为n的序列\(a_i\)和常数I,定义一次操作[l,r]可以把序列中<l的数全部变成l,>r的数全部变成r ...
- Codeforces 371C Hamburgers (二分答案)
题目链接 Hamburgers 二分答案,贪心判断即可. #include <bits/stdc++.h> using namespace std; #define REP(i,n) fo ...
- Codeforces 772A Voltage Keepsake - 二分答案
You have n devices that you want to use simultaneously. The i-th device uses ai units of power per s ...
- 2018.12.08 codeforces 939E. Maximize!(二分答案)
传送门 二分答案好题. 题意简述:要求支持动态在一个数列队尾加入一个新的数(保证数列单增),查询所有子数列的 最大值减平均值 的最大值. 然而网上一堆高人是用三分做的. 我们先考虑当前的答案有可能由什 ...
- Educational Codeforces Round 21 Problem F (Codeforces 808F) - 最小割 - 二分答案
Digital collectible card games have become very popular recently. So Vova decided to try one of thes ...
- 洛谷 P2678 跳石头【经典二分答案/贪心】
题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 NN 块岩石(不含起点和终点的岩石).在比赛过程中,选手们将从 ...
- CodeForces 371C Hamburgers
B题又耽误时间了...人太挫了.... C. Hamburgers time limit per test 1 second memory limit per test 256 megabytes i ...
- Codeforces 700A As Fast As Possible(二分答案)
[题目链接] http://codeforces.com/problemset/problem/700/A [题目大意] 有一辆限载k人速度为v2的车,n个步行速度均为v1的人要通过一段长度为l的距离 ...
- Codeforces Round #276 (Div. 1) E. Sign on Fence (二分答案 主席树 区间合并)
链接:http://codeforces.com/contest/484/problem/E 题意: 给你n个数的,每个数代表高度: 再给出m个询问,每次询问[l,r]区间内连续w个数的最大的最小值: ...
随机推荐
- 神经网络之 Batch Normalization
知乎 csdn Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce ...
- Confluence 6 使用 WebDAV 客户端来对页面进行操作
下面的部分告诉你如何在不同的系统中来设置原生的 WebDAV 客户端,这个客户端通常显示在你操作系统的文件浏览器中,例如,Windows 的 Windows Explorer 或者 Linux 的 K ...
- Confluence 6 重构查找索引
查找索引是自动维护的,但是你有时候可能会因为你在查找的时候或查看者邮件主题出现了异常,或者你的 Confluence 实例升级到了新的版本,你可能需要手动重构索引. 进行搜索索引重构: 在屏幕的右上角 ...
- Confluence 6 MySQL 输入你的数据库细节
Confluence 的安装向导将会指导你一步一步的在 Confluence 中配置安装 MySQL 数据库. 使用 JDBC 连接(默认) JDBC 是推荐的连接你的 Confluence 到数据库 ...
- Function types cannot have argument labels 错误解决方案
今天在封装网络工具类的时候 报错了 经过分析发现是在Swift3.0 把闭包的入参的参数名去掉就好了 正确写法 completion: @escaping (Any?, Bool)->() 错误 ...
- HTML&javaSkcript&CSS&jQuery&ajax(七)
’一.HTML5 实例 <video width="430" controls> <source src="mov_nnn.mp4" t ...
- python(5):scipy之numpy介绍
python 的scipy 下面的三大库: numpy, matplotlib, pandas scipy 下面还有linalg 等 scipy 中的数据结构主要有三种: ndarray(n维数组), ...
- CF1000G
蜜汁树形dp... 首先分析一下:他要求一条边至多只能经过两次,那么很容易会发现:从x到y这一条路径上的所有边都只会被经过一次.(如果过去再回来那么还要过去,这样就三次了,显然不合法) 那么其他能产生 ...
- appium如何解决每次都要安装apk的烦恼
1.appium上勾选 No Reset 2.程序加上:capabilities.setCapability("noReset", true); //不需要再次安装 3.命令行 ...
- Unnamed namespaces
Unnamed namespaces The unnamed-namespace-definition is a namespace definition of the form inline(o ...