• D2. Magic Powder


    题目链接:http://codeforces.com/contest/670/problem/D2

    题意:

    你的蛋糕需要n个原材料,你现在有k个魔法材料,魔法材料可以转化为任何材料

    现在告诉你蛋糕每个材料需要多少,以及你现在有多少个

    问你最多能够做出多少个蛋糕来

    思路:

    直接二分就好了,注意加起来会爆int

    以及r给到2e9才行

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn = 1e5+7;
     4 long long a[maxn],b[maxn],k;
     5 int n;
     6 bool check(long long x)
     7 {
     8     long long ans = 0;
     9     for(int i=1;i<=n;i++)
    10         if(a[i]*x-b[i]>k)return false;
    11     for(int i=1;i<=n;i++)
    12         ans+=max(a[i]*x-b[i],0LL);
    13     if(ans<=k)return true;
    14     return false;
    15 }
    16 int main()
    17 {
    18     scanf("%d%lld",&n,&k);
    19     for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    20     for(int i=1;i<=n;i++)scanf("%lld",&b[i]);
    21     long long l=0,r=2e9,ans=0;
    22     while(l<=r)
    23     {
    24         int mid=(l+r)/2;
    25         if(check(mid))l=mid+1,ans=mid;
    26         else r=mid-1;
    27     }
    28     cout<<ans<<endl;
    29 }
  • 相关阅读:
    2019 西安邀请赛 D
    time 库
    字符串处理+格式化输出
    数据类型
    turtle1
    格式问题
    字符串1
    基础操作
    链表去重
    PAT 1093
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/11371085.html
Copyright © 2020-2023  润新知