ybtoj 二分进阶A. 1.喂养宠物
Posted SSL_ZZL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ybtoj 二分进阶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.喂养宠物的主要内容,如果未能解决你的问题,请参考以下文章