D2. Magic Powder - 2

时间:2019-08-18
本文章向大家介绍D2. Magic Powder - 2,主要包括D2. Magic Powder - 2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目链接: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 }

原文地址:https://www.cnblogs.com/-Ackerman/p/11371085.html