Codeforces 670 D1. Magic Powder - 1【二分查找】

探讨了一个使用魔法粉作为辅助材料来最大化烘焙饼干数量的问题。通过二分查找算法确定最多能烘焙多少饼干,并提供了完整的AC代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

This problem is given in two versions that differ only by constraints. If you can solve this problem in large constraints, then you can just write a single solution to the both versions. If you find the problem too difficult in large constraints, you can write solution to the simplified version only.

Waking up in the morning, Apollinaria decided to bake cookies. To bake one cookie, she needs n ingredients, and for each ingredient she knows the value ai — how many grams of this ingredient one needs to bake a cookie. To prepare one cookie Apollinaria needs to use all n ingredients.

Apollinaria has bi gram of the i-th ingredient. Also she has k grams of a magic powder. Each gram of magic powder can be turned to exactly 1 gram of any of the n ingredients and can be used for baking cookies.

Your task is to determine the maximum number of cookies, which Apollinaria is able to bake using the ingredients that she has and the magic powder.

Input

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

The second line contains the sequence a1, a2, ..., an (1 ≤ ai ≤ 1000), 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 ≤ 1000), 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
3 1
2 1 4
11 3 16
Output
4
Input
4 3
4 3 5 6
11 12 14 20
Output
3
Note

In the first sample it is profitably for Apollinaria to make the existing 1 gram of her magic powder to ingredient with the index 2, then Apollinaria will be able to bake 4 cookies.

In the second sample Apollinaria should turn 1 gram of magic powder to ingredient with the index 1 and 1 gram of magic powder to ingredient with the index 3. Then Apollinaria will be able to bake 3 cookies. The remaining 1 gram of the magic powder can be left, because it can't be used to increase the answer.


题目大意:

有n种材料,有k个魔法材料,魔法材料可以变成任意材料。接下来一行n个数表示制作一个饼干每种材料需要多少对应的数目。接下来一行n个数表示有对应每种材料的数目。

思路:


1、二分查找枚举出一个可行解,进行判断,直到不能二分为止。

2、判断当前mid值是否可行:将每一种物品的拥有量-mid*每一种物品的需求量.然后将负值统计出来,明显这些负值就是需要这k个魔法材料去填补的量,如果负值和小于等于
k,那么就说明这k个魔法材料足够填补空缺,那么这就是一个可行解,否则不可行。

3、一直二分下去,输出最终解。


Ac代码:

#include<stdio.h>
#include<string.h>
using namespace std;
int need[1008];
int have[1008];
int tmpp[1008];
int n,k;
int Slove(int mid)
{
    for(int i=1;i<=n;i++)
    {
        tmpp[i]=have[i]-mid*need[i];
    }
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        if(tmpp[i]<0)sum+=-tmpp[i];
    }
    if(sum<=k)return 1;
    else return 0;
}
int main()
{
    while(~scanf("%d%d",&n,&k))
    {
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&need[i]);
        }
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&have[i]);
        }
        int ans=0;
        int mid;
        int l=0;
        int r=10000;
        while(r>=l)
        {
            mid=(l+r)/2;
            if(Slove(mid)==1)
            {
                ans=mid;
                l=mid+1;
            }
            else
            {
                r=mid-1;
            }
        }
        printf("%d\n",ans);
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值