ybtoj 二分进阶A. 1.喂养宠物

Posted SSL_ZZL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ybtoj 二分进阶A. 1.喂养宠物相关的知识,希望对你有一定的参考价值。

A. 1.喂养宠物

ybtoj 二分进阶 A. 1.喂养宠物


题面



解题思路

二分可以选多少只兔
当兔的个数固定下来了,每只兔吃的草就固定下来了
当时优先选吃的少的兔才能养得下(贪心)
mid 只兔吃的草 ≤ totalFood 就表示 mid 只兔养的下


Code

#include <bits/stdc++.h>

using namespace std;

int n, ttf, ans, hug[100], gre[100], food[100];

int check(int num) 
	for(int i = 1; i <= n; i ++) 
		food[i] = hug[i] + gre[i] * (num - 1);  //算出每只兔吃的
	sort(food + 1, food + 1 + n);  //优先选吃的少的兔
	int cra = 0;  //carrot!!
	for(int i = 1; i <= num; i ++)
		cra += food[i];
	return (cra <= ttf);


int main() 
	scanf("%d %d", &n, &ttf);
	for(int i = 1; i <= n; i ++) scanf("%d", &hug[i]);
	for(int i = 1; i <= n; i ++) scanf("%d", &gre[i]);
	int l = 1, r = n;
	while(l <= r) 
		int mid = (l + r) / 2;
		if(check(mid)) 
			ans = mid, l = mid + 1;
		else r = mid - 1; 
	
	printf("%d", ans);

以上是关于ybtoj 二分进阶A. 1.喂养宠物的主要内容,如果未能解决你的问题,请参考以下文章

ybtoj 宽搜进阶二分A. 1.最小权值

ybtoj 字符串进阶A. 1.生日排序

ybtoj 二分进阶DPC. 3.攻击法坛

ybtoj 深搜进阶A. 2.最大费用

ybtoj「基础算法」第1章 递推算法强化训练贪心A. 1.划分数列

ybtoj 11.13 S组暴力A. 他的世界