zoukankan      html  css  js  c++  java
  • 二分搜索 Codeforces Round #218 (Div. 2) C. Hamburgers

    题目传送门

     1 /*
     2     题意:一个汉堡制作由字符串得出,自己有一些原材料,还有钱可以去商店购买原材料,问最多能做几个汉堡
     3     二分:二分汉堡个数,判断此时所花费的钱是否在规定以内
     4 */
     5 #include <cstdio>
     6 #include <algorithm>
     7 #include <cmath>
     8 using namespace std;
     9 
    10 typedef long long ll;
    11 const int MAXN = 1e2 + 10;
    12 const int INF = 0x3f3f3f3f;
    13 char ham[MAXN];
    14 ll nb, ns, nc;
    15 ll pb, ps, pc;
    16 ll b, s, c;
    17 ll m;
    18 
    19 bool check(ll x)  {
    20     ll cost = 0;
    21     if (b * x > nb) cost += (b * x - nb) * pb;
    22     if (s * x > ns) cost += (s * x - ns) * ps;
    23     if (c * x > nc) cost += (c * x - nc) * pc;
    24     return cost <= m;
    25 }
    26 
    27 int main(void)  {       //Codeforces Round #218 (Div. 2) C. Hamburgers
    28     scanf ("%s", &ham);
    29     scanf ("%I64d%I64d%I64d", &nb, &ns, &nc);
    30     scanf ("%I64d%I64d%I64d", &pb, &ps, &pc);
    31     scanf ("%I64d", &m);
    32     b = s = c = 0;
    33     for (int i=0; ham[i]; ++i)    {
    34         if (ham[i] == 'B')    b++;
    35         else if (ham[i] == 'S')   s++;
    36         else    c++;
    37     }
    38     ll l = 0, r = 1e13;
    39     while (l + 1 < r)   {
    40         ll mid = (l + r) >> 1;
    41         if (check (mid))    l = mid;
    42         else    r = mid;
    43     }
    44     printf ("%I64d
    ", l);
    45 
    46     return 0;
    47 }
    编译人生,运行世界!
  • 相关阅读:
    linux 开机启动设置
    Ubuntu安装Oracle时出现乱码,及其他安装错误
    ubuntu 设置DNS
    opencv cuda TK1 TX1 兼容设置
    int to string
    post文件的html
    vc 获得调用者的模块名称
    dlib landmark+人面识别
    android破解
    jquery $(document).ready() 与window.onload的区别
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4676325.html
Copyright © 2011-2022 走看看