博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易2020校招笔试- 运维工程师(正式批)编程题 吃葡萄
阅读量:3898 次
发布时间:2019-05-23

本文共 1269 字,大约阅读时间需要 4 分钟。

【说点啥】

代码题不难,第一题思维或者二分,第二题dp,第三题离散化+二分,第四题贪心。(理论题gg

第一题思维一下没想到,所以写一下题解。

题面:

思路:一看数据这么大有1e18肯定是思维题,再一看答案具有单调性直接二分答案。

二分的check函数这么写:如果最多的葡萄都可以被吃完,那么最少和次少一人负责一款直接解决就好了;如果两个人都吃不完最多的葡萄,那么这个肯定有得剩吃不完;否则轮流按优先吃最多、然后次少、判断剩下的能不能被最后一个人吃完。

二分时间复杂度是logn级别的,因此这种写法的时间复杂度最多是log(1e18)也就是64,相当于常数级别看作O(1)。

另一种解法:思维

当 a,b,c都差不多大 或者 其中两个比较大的时候,我们总能调整到尽可能平均;当其中一个比较大的时候,由于这个只能被两个人吃掉,所以最好也是对半分。所以答案就是:三个人平均分配 a,b,c 或者 两个人分配最多的数目的最大值。

代码:

// 二分#include 
using namespace std;bool check(long long num,long long a[]){ if (a[2]<=num) { return true; } if (a[2]-num>num) { return false; } return a[0]+a[1]+a[2]-2*num<=num;} int main(){ int t; cin>>t; while(t--){ long long a[3]; for(int i=0;i<3;i++) cin>>a[i]; sort(a,a+3); long long l=1,r=(long long)1e18; long long mid,ans; while(l<=r){ mid=(l+r)/2; if(check(mid,a)){ ans=mid; r=mid-1; } else{ l=mid+1; } } cout<
<
using namespace std;int main(){ int t; cin>>t; while(t--){ long long a[3]; long long sum=0; for(int i=0;i<3;i++) cin>>a[i],sum+=a[i]; sort(a,a+3); cout<

 

转载地址:http://iefen.baihongyu.com/

你可能感兴趣的文章
linux、mysql、nginx、tomcat 性能参数优化
查看>>
Nginx使用Linux内存加速静态文件访问
查看>>
杀掉nginx进程后丢失nginx.pid,如何重新启动nginx
查看>>
nginx另类复杂的架构
查看>>
Nginx流量复制/AB测试/协程
查看>>
使用NTP服务器完美解决VMware Linux时间无法同步问题
查看>>
机器学习笔记(3)---K-近邻算法(1)---约会对象魅力程度分类
查看>>
机器学习笔记(4)---K-近邻算法(2)---使用sklearn中的KNN算法
查看>>
数据结构——外部排序
查看>>
UNIX网络编程——System V 消息队列
查看>>
信号量、互斥锁,读写锁和条件变量的区别
查看>>
UNIX网络编程——Posix共享内存区和System V共享内存区
查看>>
js循环语句
查看>>
js中时钟的写法
查看>>
js事件冒泡
查看>>
京东金融曹鹏:通过JDD大赛,实现“比你更懂你”的极致价值,让金融更简单,更平等
查看>>
HTML我的家乡杭州网页设计作业源码(div+css)~ HTML+CSS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计 ~HTML期末大作业
查看>>
HTML网页设计期末课程大作业~动漫樱桃小丸子5页表格div+css学生网页设计作业源码
查看>>
HTML学生网页设计作业成品~化妆品官方网站设计与实现(HTML+CSS+JS)共8个页面
查看>>
web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)
查看>>