YBTOJ:喂养宠物
[题目]大意
有 n n n只兔兔,每只兔兔单独时都需要吃 h u n g e r i hunger_i hungeri的食物量,假如有同食者,那么每个同食者会让它需要多吃 g r e e d i greed_i greedi的食物量。假如小明最多能提供 t o t a l F o o d totalFood totalFood的食物,那么他最多能养多少只兔兔。
题目分析
养的兔子越多,所需食物量越大,可见答案具有单调性,用二分答案做。
答案的上下限:
下限很明显就是 0 0 0,上限就是兔兔的总数即 n n n, n n n的最大值是 50 50 50,所以上限为 50 50 50。
再确定二分条件:
“在养mid只兔兔时小明是否能够提供足够食物”。
怎么判断呢?
每个兔兔的代价是不同的,但是它们的贡献是相同的,所以可以用贪心做,先预处理出所有兔兔的代价,当选 m i d mid mid只兔兔时,第 i i i只兔兔的代价为 h u n g e r i + g r e e d i ∗ ( m i d − 1 ) hunger_i+greed_i*(mid-1) hungeri+greedi∗(mid−1)
然后 s o r t sort sort大法~~
然后用 s u m sum sum累加前 m i d mid mid个,最后判断 t o t ≥ s u m tot \geq sum tot≥sum
C o d e Code Code
#include<algorithm>
#include<iostream>
#include<cstdio>
#define sco 50
using namespace std;
int n,tot,l=0,r=50,mid,hun[sco],gre[sco];
bool check(int x){int p[sco]={},tmp=tot;for(int i=1;i<=n;++i){p[i]=hun[i]+gre[i]*(x-1);}sort(p+1,p+1+n);for(int i=1;i<=x;++i)tmp-=p[i];return tmp>=0;
}
int main(){scanf("%d%d",&n,&tot);for(int i=1;i<=n;++i)scanf("%d",hun+i);for(int i=1;i<=n;++i)scanf("%d",gre+i);while(l+1<r){mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}printf("%d",l);return 0;
}
YBTOJ:喂养宠物相关推荐
- YbtOJ#732-斐波那契【特征方程,LCT】
正题 题目链接:http://www.ybtoj.com.cn/contest/125/problem/2 题目大意 给出nnn个点的一棵树,以111为根,每个点有点权aia_iai.要求支持mmm ...
- YbtOJ#791-子集最值【三维偏序】
正题 题目链接:http://www.ybtoj.com.cn/contest/123/problem/1 题目大意 给出333个长度为nnn的排列A,B,CA,B,CA,B,C.然后一个下标集合SS ...
- YbtOJ#662-交通运输【线段树合并,树状数组】
正题 题目链接:http://www.ybtoj.com.cn/contest/122/problem/2 题目大意 给出nnn个点的一棵有根树,对于每个xxx求,删除点xxx后修改某个点的父节点(修 ...
- YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
正题 题目链接:http://www.ybtoj.com.cn/contest/122/problem/3 题目大意 S(i)S(i)S(i)表示iii的约数个数,QQQ次询问给出n,mn,mn,m求 ...
- YbtOJ#912-神秘语言【结论,欧拉定理】
正题 题目链接:http://www.ybtoj.com.cn/problem/912 题目大意 给出L,RL,RL,R,求有多少长度在[L,R][L,R][L,R]之间的字符串满足依次取出所有偶数位 ...
- YbtOJ#763-攻城略池【线段树合并】
正题 题目链接:http://www.ybtoj.com.cn/problem/763 题目大意 给出nnn个点的一棵树,每个di=0d_i=0di=0的点每秒会产生一个士兵往根节点走,走到一个节点 ...
- YbtOJ#853-平面标记【整体二分,凸壳】
正题 题目链接:http://www.ybtoj.com.cn/contest/119/problem/3 题目大意 给出nnn个点(xi,yi)(x_i,y_i)(xi,yi),mmm次给出(k ...
- YbtOJ#752-最优分组【笛卡尔树,线段树】
正题 题目链接:http://www.ybtoj.com.cn/problem/752 题目大意 nnn个人,每个人有cic_ici和did_idi分别表示这个人所在的队伍的最少/最多人数. 然后 ...
- YbtOJ#883-最大的割【带修线性基】
正题 题目链接:http://www.ybtoj.com.cn/contest/118/problem/3 解题思路 给出nnn个点,mmm次动态插入一条无向边询问:割掉一些边使得图中至少两点不连通, ...
最新文章
- 旋转矩阵与欧拉角之间的转换
- 小学计算机笔记,小学信息技术教师读书笔记
- Redis学习笔记--Redis数据过期策略详解
- 图像去噪 使用dct变换进行去噪
- Phpcms之核心目录phpcms
- 全网Star最多(近20k)的Spring Boot开源教程 2019 年要继续更新了!
- 【LeetCode笔记】35. 搜索插入位置(Java、二分法)
- 微信公众账号 token 验证失败 解决办法
- python 学习笔记 while语句(11)
- Android 助力云计算
- 响应式 BootStrap 媒体查询 栅格 组件 scss
- win10误删的注册表能还原吗_教你手动还原Win10注册表?
- 螺旋扩孔的效率高,但侧壁质量不如步进扩孔
- 计算机可靠度计算公式,可靠性计算公式大全
- 【完美解决:绝对路径含中文问题】bat一键启动应用绝对路径中含中文导致无法执行
- 盲盒包装流水线(数据结构实践-栈)
- Linux下的Html编辑器
- css+js简单实现126邮箱注册页面
- 大学计算机应用能力基础,大学计算机应用基础
- 在windows下编译PHP(5.4版本)
热门文章
- 自动升级的原理及实现
- [参考]FreeBSD5.4+GNOME2.10.0安装过程
- (附源码)springboot服装购物网站 毕业设计 010234
- LATEX中常用的插图和插表格的方法
- 计算机教室要配备空调吗,教室要不要装空调?家长的意见出奇的一致:装!必须要装!...
- Mal-PEG3.4k-PLA 马来酰亚胺PEG聚乳酸 Mal-PLA 马来酰亚胺修饰聚乳酸
- Rails配置(一)——安装rails
- 关于servlet的@WebServlet注解。
- 四、ubuntu20.04下找不到NVIDIA相关命令
- 为四川汶川地震贡献自己的微薄之力