zoukankan      html  css  js  c++  java
  • 【CodeForces】[670D2]Magic Powder

    这里写图片描述

    题目大意:制作一个蛋糕需要n种材料,然后你有k克魔法粉,每克魔法粉可以代替任意一克的材料,ai代表制作一个蛋糕需要第i种材料多少克,bi代表你拥有第i个材料多少克,问做可以做多少个蛋糕。

    判断能不能做mid个蛋糕
    如果不能则减少mid的范围
    以此二分查找

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    __int64 a[100200],b[100200];
    __int64 n,k;
    bool judge(__int64 x) {
        __int64 t=k;
        for(int i=0; i<n; i++) {
            if(b[i]+t>=a[i]*x)
                t-=max((__int64)0,a[i]*x-b[i]);
            else
                return false;
        }
        return true;
    }
    int main() {
        while(scanf("%I64d %I64d",&n,&k)!=EOF) {
            for(int i=0; i<n; i++)
                scanf("%I64d",&a[i]);
            for(int i=0; i<n; i++)
                scanf("%I64d",&b[i]);
            __int64 l=0,r=2000000002,res;
            while(l<=r) {
                __int64 mid=(l+r)/2;
                if(judge(mid)) {
                    res=mid;
                    l=mid+1;
                } else
                    r=mid-1;
            }
            printf("%I64d
    ",res);
        }
        return 0;
    }
    

    题目地址:【CodeForces】[670D2]Magic Powder - 2

  • 相关阅读:
    linux echo 换行
    linux 脚本 逻辑关系的写法及区别
    linux vim ***
    跟我一起学Makefile
    linux awk
    linux grep命令 ***
    unbuntu 安装及服务器配置
    linux 静态库文件
    samba 配置
    linux tar
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569471.html
Copyright © 2011-2022 走看看