T1-H 大鱼吃小鱼
题目描述:
给定n条鱼,每条鱼具有其自身体重,以及被捕食者吃掉后,捕食者会增加的体重。
假如你是一条鱼,你可以吃掉任何体重小于等于你的鱼类。现在需要吃掉所有n条鱼,请问你需要具备的最小体重x是多少。
题目解析:
题目的hint指出二分答案,我们的思路便很明确:
x不会超过最大鱼的体重,因为最大的鱼直接可以吃掉n条鱼,同时,x也不会小于最小鱼的体重,如果这样的话一条鱼也吃不掉。这样,我们得到了x的范围,在其中进行二分查找即可。
由于鱼具有两种性质,并且需要对体重排序,定义结构如下:
struct fish{int w;int v;bool operator < (const fish &b) const{return w<b.w;}
}a[10005];
为了判断体重x能否吃掉所有鱼,定义eat函数
int eat(int x)
{int i;for(i=1;i<=n;i++) if(a[i].w>x) break;int weight=sum[i-1]+x; for(int j=i;j<=n;j++){if(weight>=a[j].w) weight+=a[j].v;else return 0;}return 1;
}
其中sum数组预处理了前i条鱼提供的增重总和。
完整代码如下:
#include<stdio.h>
#include<climits>
#include<iostream>
#include<algorithm>
using namespace std;
struct fish{int w;int v;bool operator < (const fish &b) const{return w<b.w;}
}a[10005];
int b[10005];
int sum[10005];
int n;
int eat(int x)
{int i;for(i=1;i<=n;i++) if(a[i].w>x) break;int weight=sum[i-1]+x; for(int j=i;j<=n;j++){if(weight>=a[j].w) weight+=a[j].v;else return 0;}return 1;
}
int main()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i].w>>a[i].v;sort(a+1,a+1+n);sum[1]=a[1].v;for(int i=2;i<=n;i++) sum[i]=sum[i-1]+a[i].v;int l=a[1].w,r=a[n].w;int mid;// printf("7");while(l<r){mid=(l+r)/2;if(eat(mid)) r=mid;else l=mid+1; }cout<<mid;}
T1-H 大鱼吃小鱼相关推荐
- 多个矩形,求覆盖面积,周长,及交点
问题:给出若干个矩形,(给的是矩形左上角和右下角坐标),求最后所得图形的面积/周长: 三个矩形如左图所示,而若要计算面积,看右图,用3个矩形各自的面积之和减去重复部分(红色和蓝色)的面积 人算很简单, ...
- 016 | 漫谈区块链共识机制
原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/blockchain/20180425 微信订阅号:keeganlee_me 写于201 ...
- shell版俄罗斯方块
#!/bin/bash # Tetris Game # 10.21.2003 xhchen #颜色定义 cRed=1 cGreen=2 cYellow=3 cBlue=4 cFuchsia=5 cCy ...
- shell脚本俄罗斯方块游戏
亲自测试了一个大牛写的shell脚本,感兴趣可以看看,效果如下: 代码如下: 1 #!/bin/bash 2 3 # Tetris Game 4 # 10.21.2003 xhchen<[ema ...
- NLP重大突破?一文读懂XLNet“屠榜”背后的原理
作者 | 李理 原文链接:https://fancyerii.github.io/2019/06/30/xlnet-theory/ 本文介绍XLNet的基本原理,读者阅读前需要了解BERT等相关模型, ...
- 牛客网平台常州大学新生寒假训练会试
A-添加逗号 链接:https://www.nowcoder.net/acm/contest/78/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其 ...
- 【邓侃】哈佛大学机器翻译开源项目 OpenNMT的工作原理
一. 哈佛大学机器翻译开源项目 OpenNMT 2016年12月20日,哈佛大学自然语言处理研究组,宣布开源了他们研发的机器翻译系统 OpenNMT [1],并声称该系统的质量已经达到商用水准. 在 ...
- c语言读h5文件,我利用C语言实现SHA-256算法,需要从一个txt文件中读出数据并把...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 并把得到的密文写入另一个txt文件张该怎么改代码啊? #include #include extern char* StrSHA256(const cha ...
- acm算法模板(2)
数学问题: 1.精度计算--大数阶乘 2.精度计算--乘法(大数乘小数) 3.精度计算--乘法(大数乘大数) 4.精度计算--加法 5.精度计算--减法 6.任意进制转换 7.最大公约数.最小公倍数 ...
- C语言实现变步长求积分算法
链接:https://blog.csdn.net/chen_dsir/article/details/71257631 博主详细介绍了复合梯形公式, 链接:https://wenku.baidu.c ...
最新文章
- 刷了半年LeetCode,总共500题,拿到了 Google 的 special offer,记下笔记,感谢这些很有用的公众号...
- (已解决)linux如何删除-开头的文件或者目录
- 全球智慧医疗产业发展现状
- scheduledexecutorservice 的使用_使用J.U.C实现定时任务
- 3分钟学会python_3分钟学会一个Python小技巧
- vue中手机号,邮箱正则验证以及60s发送验证码
- java对象流读取完毕_从Java 8流中获取具有最大频率的对象
- oracle 表关联索引优化,Oracle执行计划调优-超级大表关联超级小表的性能调优
- phpShort v3.2 – PHP短网址平台源码
- POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新
- php如何从获取数据,如何从​​获取值并保存到php的数据库
- 动态设置div的高度_DIV块和文字水平垂直居中,点击弹出文字提示
- 语音数据集下载地址汇总| 免费的汉语说话人识别语料库 | Common Voice 数据集 | 下载总结
- 教务系统自动评教_「四川大学教务处本科登陆系统」四川大学本科教务系统 - 一键评教 - seo实验室...
- 做在线交易你必须知道的关于支付的知识
- tomcat7 性能优化
- 【马红“名师+”研修共同体成员风采】
- 冯成毅:各类交易者的深度心理剖析
- 2018年的第一篇文章(福利篇)
- exchange外网访问和证书配置
热门文章
- 还在花钱打印身份证、证件照?打开手机3秒就能扫描打印,秒学
- kaldi lattice
- 视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
- Windows手动清理C盘
- Python的中文识别问题解决办法
- IT知识百科:什么是下一代防火墙和IPS?
- 2021年中国智能家电行业产业发展环境(PEST)及前景分析[图]
- 优雅代码的秘密,只因为我掌握了Java Stream 流操作
- 让eclipse的主题变成黑色
- 计算机路由表更新命令,计算机cmd命令之route,查看路由表,或配置一个更有效的路由...