zoukankan      html  css  js  c++  java
  • Codeforces Round #350 (Div. 2) D2 二分

    D2. Magic Powder - 2
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    The term of this problem is the same as the previous one, the only exception — increased restrictions.

    Input

    The first line contains two positive integers n and k (1 ≤ n ≤ 100 000, 1 ≤ k ≤ 109) — the number of ingredients and the number of grams of the magic powder.

    The second line contains the sequence a1, a2, ..., an (1 ≤ ai ≤ 109), where the i-th number is equal to the number of grams of the i-th ingredient, needed to bake one cookie.

    The third line contains the sequence b1, b2, ..., bn (1 ≤ bi ≤ 109), where the i-th number is equal to the number of grams of the i-th ingredient, which Apollinaria has.

    Output

    Print the maximum number of cookies, which Apollinaria will be able to bake using the ingredients that she has and the magic powder.

    Examples
    Input
    1 1000000000
    1
    1000000000
    Output
    2000000000
    Input
    10 1
    1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
    1 1 1 1 1 1 1 1 1 1
    Output
    0
    Input
    3 1
    2 1 4
    11 3 16
    Output
    4
    Input
    4 3
    4 3 5 6
    11 12 14 20
    Output
    3

    题意:http://www.cnblogs.com/hsd-/p/5464525.html

             (补)直通D1  数据范围变大

    题解:二分处理

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define ll __int64
     5 using namespace std;
     6 ll n,k;
     7 ll a[100005];
     8 ll b[100005];
     9 ll gg;
    10 bool check(ll x)
    11 {
    12     ll gg=k;
    13     for(int i=1;i<=n;i++)
    14     {
    15         if((x*a[i])>b[i])
    16         {
    17             ll cha=x*a[i]-b[i];
    18             gg=gg-cha;
    19         }
    20         if(gg<0)
    21             return false;
    22     }
    23     return true;
    24 }
    25 int main ()
    26 {
    27     scanf("%I64d %I64d",&n,&k);
    28     ll gg=0;
    29     for(int i=1;i<=n;i++)
    30         scanf("%I64d",&a[i]);
    31     for(int i=1;i<=n;i++)
    32         scanf("%I64d",&b[i]);
    33      ll l=0,r=2000000000,mid;
    34      while(l<r)
    35      {
    36          //cout<<l<<" "<<r<<endl;
    37          mid=(l+r+1)>>1;
    38          if(check(mid))
    39             l=mid;
    40          else
    41             r=mid-1;
    42      }
    43      cout<<l<<endl;
    44     return 0;
    45 }
  • 相关阅读:
    nginx,php for window 7(64bit) install
    ret.concat.apply([],ret)
    JavaScript:constructor属性
    jquery 插件address
    学习笔记(C++)
    关于网站缓存设计的几点思考
    Ubuntu20.04 换源 Learner
    什么叫程序集
    c# 中堆和栈的区别
    命名空间和类的概念
  • 原文地址:https://www.cnblogs.com/hsd-/p/5667703.html
Copyright © 2011-2022 走看看