2016百度实习一面

总共有四道题,其他三道感觉比较简单,第一题记录单词个数,但是单词数量比较多,所以用map搞。第二题遍历树,得出树中每个节点的深度。第三题求单个lca。

最难的一题是一道思维题,给出n个数(n<=10^6),如果有两个数a,b,满足2*a<=b,则可以把数a装入数b中,每个数最多只能装一个数,问最多有多少个数可以被装?

举个荔枝:

假设现在n=5

这5个数为:4 1 2 8 9

我们先排个序得1 2 4 8 9

然后1->2,4->8则最多有两个数被装人。

这时很容易想到几种贪心策略,比如排序后,从最小的开始贪心,或从最大的开始贪心。

这里给出一组数据说明这种贪心是错误的。

n=4

1 2 4 7

n=4

3 5 10 20

然后来看下这个问题到底应该怎么去想。

首先,要找到一个关键性质,在排序之后,一定存在某个数x,使得最优解中被装入数在x的左边,装入数在x的右边。

接下来看图。

时间: 2024-12-24 08:28:57

2016百度实习一面的相关文章

2016百度实习编程题:编号转换

参考链接:http://www.cnblogs.com/sshoub/archive/2011/07/29/2121312.html 根据参考链接中的算法,我这样理解 ABCDEF,这个看出一个26进制的数,0<->Z.1<->A.2<->B 题目要求我们将十进制数 和 26进制数进行转换 26进制数字转换成十进制: 注意:越靠近后面的字符,对于的位权越低 如下代码: public static int AZTonum1(String str){ int r = 0;

2016百度实习编程题:括号序列

不知如何解决 1.感觉贪心或者动态规划,不知道如何解决 2.做过生成合法括号序列的题目,想到用DFS补成合法的括号,然而没有成功

2016百度之星 补题记

2016"百度之星" - 复赛(Astar Round3) 拍照 思路:先把所有的线段投影到x轴,然后将所有线段的起末坐标存进数组,排序后从坐标最小开始枚举.如果遇到起点标志,就加一:结束点标志减一.如此即可求出同一时刻,遇到当前线段结束点时,有多少线段包含在内 /************************************************************** Problem:hdu 5417 User: youmi Language: C++ Result

2016百度之星复赛 1003 拍照 优先队列

2016"百度之星" - 复赛(Astar Round3) Ended 2016-05-29 14:00:00 - 2016-05-29 17:00:00 Current Time: 00:46:02 Solved Pro.ID Title Ratio(Accepted / Submitted) Language   1001 D++游戏 13.79% (16/116) 中文   1002 K个联通块 17% (136/800) 中文 1003 拍照 22.49% (434/1930)

2016&quot;百度之星&quot; - 资格赛(Astar Round1) Problem D 简单题

Problem D Accepts: 1527 Submissions: 4307 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Description 度熊所居住的 D 国,是一个完全尊重人权的国度.以至于这个国家的所有人命名自己的名字都非常奇怪.一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字.例如,如果一个人名字

2016&quot;百度之星&quot; - 初赛(Astar Round2A)解题报告

此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" - 初赛(Astar Round2A)  Problem 1001 All X Accept: 0    Submit: 0 Time Limit: 2000/1000 mSec(Java/Others)    Memory Limit : 65536 KB  Problem Description F(x,

HDU 5701 中位数计数( 2016&quot;百度之星&quot; - 初赛(Astar Round2B) 思维 + 暴力)

传送门 中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 852 Accepted Submission(s): 335 Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在多少个包含

hdu 5685 Problem A(2016&quot;百度之星&quot; - 资格赛(Astar Round1)——线段树)

题目链接:acm.hdu.edu.cn/showproblem.php?pid=5685 Problem A Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 564    Accepted Submission(s): 236 Problem Description 度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长

HDU 5698 瞬间移动 (2016&quot;百度之星&quot; - 初赛(Astar Round2B) 1003)

传送门 瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 140 Accepted Submission(s): 66 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第n行第m列的格子有几种方案