CodeForces 670D1 暴力或二分

今天,开博客,,,激动,第一次啊
嗯,,先来发水题纪念一下

D1. Magic Powder - 1

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 alln 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 12 1 411 3 16

output

4

input

4 34 3 5 611 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.

1、CodeForces 670D1

2、链接:http://codeforces.com/problemset/problem/670/D1

3、总结:

题意,给出n种做一个饼干所要的材料数,n种现有材料数,k个可变化材料,求可做多少饼干。

可暴力,也可直接二分。

小数据直接暴力

#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#define max(a,b) (a>b?a:b)
#define abs(a) ((a)>0?(a):-(a))
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
int main()
{
int n,k;
int a[1500],b[1500];
while(scanf("%d%d",&n,&k)!=EOF)
{
for(int i=0;i<n;i++)scanf("%d",&a[i]);
for(int i=0;i<n;i++)scanf("%d",&b[i]);
int aa,flag=0;
int num=0;
while(k>=0) //k>=0,不要k>0
{
for(int i=0;i<n;i++){ //找到个数最小点,标记
if(aa>b[i]/a[i]){
flag=i;
aa=b[i]/a[i];
}
}
//下面更新记录
int bb=a[flag]-b[flag]%a[flag];
if(k<bb)break;
else {
k-=bb;
b[flag]+=bb;
aa=b[flag]/a[flag];
}

}
cout<<aa<<endl;
}
return 0;
}

//大数据二分
//参考了http://blog.csdn.net/qiuxueming_csdn/article/details/51471935

#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
#define max(a,b) (a>b?a:b)
#define abs(a) ((a)>0?(a):-(a))
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
int n,k;
int a[1000000],b[1000000];

bool ok(LL mid)
{
LL kk=k;
for(int i=0;i<n;i++){
if(a[i]*mid>b[i]){
kk-=(a[i]*mid-b[i]);

}
if(kk<0)return false; //mid太大,跳出; 不能放到上面if里
}
return true; //mid太小,使k有剩余
}

int main()
{
while(~scanf("%d%d",&n,&k))
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
scanf("%d",&b[i]);
LL l=0,r=INF;
LL num,mid;

while(l<=r)
{
mid=(l+r)>>1;
if(ok(mid)){
l=mid+1;
num=mid; //num要在这里赋值
}else {
r=mid-1;
}
}
cout<<num<<endl;
}
return 0;
}
 
时间: 2024-08-01 12:21:08

CodeForces 670D1 暴力或二分的相关文章

CodeForces - 670D1 Magic Powder - 1 (模拟)

CodeForces - 670D1 Magic Powder - 1 Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Status Description This problem is given in two versions that differ only by constraints. If you can solve this problem in large c

Codeforces 772A Voltage Keepsake - 二分答案

You have n devices that you want to use simultaneously. The i-th device uses ai units of power per second. This usage is continuous. That is, in λ seconds, the device will use λ·ai units of power. The i-th device currently has bi units of power store

Codeforces Round #425 (Div. 2) Problem C (Codeforces 832C) Strange Radiation - 二分答案 - 数论

n people are standing on a coordinate axis in points with positive integer coordinates strictly less than 106. For each person we know in which direction (left or right) he is facing, and his maximum speed. You can put a bomb in some point with non-n

POJ 2110 Mountain Walking 暴力搜索+二分

题意:n*n的矩阵 每次能走四个方向,定义路径的花费为:路径中方格的max-min,问从左上到右下的最小花费,n<=100 4个方向不是DAG,不能DP,暴力搜索 每个点最坏情况下走n*n 共n*n个点 O(n^4)TLE二分ans后 枚举下界,则此时知道路径的最小值和最大值从 起点出发把mn<=c<=mx的点都遍历,此时dfs 相当于遍历图,不用回溯,复杂度为O(n^3*logn) #include <iostream> #include <cstring> #

luogu P2343 宝石管理系统 暴力,思维,二分

P2343 宝石管理系统 题目描述 GY君购买了一批宝石放进了仓库.有一天GY君心血来潮,想要清点他的宝石,于是把m个宝石都取出来放进了宝石管理系统.每个宝石i都有一个珍贵值vi,他希望你能编写程序查找到从大到小第n珍贵的宝石.但是现在问题来了,他非常不小心的留了一些宝石在仓库里面,有可能要往现有的系统中添加宝石.这些宝石的个数比较少.他表示非常抱歉,但是还是希望你的系统能起作用. 输入输出格式 输入格式: 第一行一个整数m,q,表示已经取出来的宝石个数以及接下来的查询或插入操作个数. 第二行m

Codeforces gym 100517(二分,同方向判断)

题意:给了一个凸包,按顺时针顺序给点,点数不超过10万,再给了两个不同点,点严格在凸包内,凸包保证没有三点共线,问凸包上有多少对点(pi, pj),满足pi和pj的线段 与 两个点的线段严格相交,线段间严格相交意思是交点不在端点. 链接:http://codeforces.com/gym/100517 (K题) 解法:设凸包有n个点,将凸包点集p扩大一倍,变为2n个点.枚举前n个点,每次枚举到 i ,在[i+1, i+n-1]内进行二分,找到两个点p1,p2,满足p1和p2是"最靠近"

Educational Codeforces Round 21 Problem F (Codeforces 808F) - 最小割 - 二分答案

Digital collectible card games have become very popular recently. So Vova decided to try one of these. Vova has n cards in his collection. Each of these cards is characterised by its power pi, magic number ci and level li. Vova wants to build a deck

POJ 2785 (暴力搜索&amp;二分)

The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, compute how many quadruplet (a, b, c, d ) ∈ A x B x C x D are such that a + b + c + d = 0 . In the following, we assume that all lists have the same size n .

codeforces 343C Read Time 二分 + 贪心

http://codeforces.com/problemset/problem/343/C 题意: 有一些磁头,给出了起始的位置,给出了一些磁盘中需要访问的地点.求这些磁头移动的最小的次数. 思路: 二分找出满足要求的最小的时间,对于当前尝试的时间进行贪心判断是否可用.对于贪心,因为每一个磁头都需要读到还没有人读过的最左边的地方.如果这个都不能满足,那么这个时间是不可以的. 在这基础上,对于同样的这么多时间,尽可能的让这个磁头读到能读到的最右边,这样就可以将还没有读过的地方尽可能的往右推. 如