avatar
报个offer@FG,回报版面# JobHunting - 待字闺中
v*a
1
积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
FB的新题:
X)Initial Onsite,
题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
于是把公式写出来,顺便程序也写出来,
然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
deploy 到所有机器里,大概百万台,
怎么设计一个系统。
这个新题,正好想到了Gossip,
于是扯了一通 Gossip 算法,给出复杂度O(LogN) 就可以发送完,
随后发现由于带宽限制,网络拓扑结构已知,所以Gossip 不好,
抄袭 mapReduce 的框架,设计了一个有 Master 节点的 Gossip 算法
X) 顺利拿到Onsite, 一个印度 Manager 听我面的很好,对algorithm 和 backend很熟
悉,
于是 onsite 时特地来面我,题目都是behavior,你为啥有激情,为啥想来FB等等,
当然在问之前花了半小时介绍他的工作, 说他们走backend的多牛,多重要,
同时强烈推荐我去他的组,说有多激情,可以改变世界,我边听边在心里说:
我艹烙印
X)Onsite,给你一个函数 bool Prob() ,有50%的概率返回 True,50%的概率返回
False
请你用写一个新的函数:bool Prob2(double p)
要求 p 的概率返回 True, 1 - p 的概率返回 False
当然,肯定使用 Prob 了
这题我用的2分法,花了不少时间,,
然后问了fibonacci的 O(1) Space 或者 O(N) time 的解法,
刚好剩下5分钟问他问题,
结果大跌眼镜,内部推荐的朋友告诉我,这个人给了我个 Negative!!
HR 也没告诉我为啥,莫须有的罪名。
面试是看RP的,RP不好,总能碰到看你不顺眼的
X)Onsite 老题新酒,直方图,天上下雨,求能存多少水
E.G:
3,1,5 => 2
3,1,0,5 => 5
很假单的O(N)扫描就行
扩展是改成Online的算法,就是说:
有些地方高度随时会变,
E.G.
3,1,5 => 3,0,5 => 3
3,1,0,5 => 3,3,0,5 => 3
设计一个算法,最快的返回改变高度之后的结果
----
我的方法:
做题
------------------------------------------------------
非常感谢提供面经的人,没有这些面经,绝对没把握当场作出来!
avatar
b*n
2
gxgx!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
b*u
3
prob()怎么搞?
我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
m*s
4
比如p=0.3
call prob->
>0.5:返回失败
<0.5:call prob->
<0.5:返回成功
>0.5(0.25-0.5):call prob。。。
期望大概是扔3次

【在 b***u 的大作中提到】
: prob()怎么搞?
: 我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

avatar
b*u
5
没看懂。怎么generalize?

【在 m******s 的大作中提到】
: 比如p=0.3
: call prob->
: >0.5:返回失败
: <0.5:call prob->
: <0.5:返回成功
: >0.5(0.25-0.5):call prob。。。
: 期望大概是扔3次

avatar
h*n
6
so strong! mark

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
r*n
7
cong!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
z*w
8
gxgx!
avatar
B*5
9
赞牛人,恭喜~
avatar
i*r
10
我现在对烙印真的有心理阴影
我面F的时候也是个烙印

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
n*a
11
cong!
avatar
w*n
12
牛~请问为啥不去F啊?
avatar
w*n
13
牛~请问为啥不去F啊?
avatar
k*t
14
为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
高速发展的平台,而不是一个相对established环境。
G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
尽管F以后如何还不一定,但向上空间同样不可限量。

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
P*f
15
谁给钱多去谁。
G跳Twitter/Zynga的更多,Facebook也算比较大公司了,IPO搞头不大。要去动态的,
观察下从这些公司跳出来的去哪就可以了

【在 k***t 的大作中提到】
: 为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
: 高速发展的平台,而不是一个相对established环境。
: G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
: 尽管F以后如何还不一定,但向上空间同样不可限量。

avatar
P*f
16
welcome to G

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
k*t
17
同意向钱看和向前看:) 说说从这些公司跳出来的都去哪?

【在 P*****f 的大作中提到】
: 谁给钱多去谁。
: G跳Twitter/Zynga的更多,Facebook也算比较大公司了,IPO搞头不大。要去动态的,
: 观察下从这些公司跳出来的去哪就可以了

avatar
m*a
18
Congrats!
啥叫带宽限制,toplogic已知 -> master 节点 Gossip

积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
FB的新题:
X)Initial Onsite,
题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
于是把公式写出来,顺便程序也写出来,
然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
deploy 到所有机器里,大概百万台,
怎么设计一个系统。
这个新题,正好想到了Gossip,
于是扯了一通 Gossip 算法,给出复杂度O(LogN) 就可以发送完,
随后发现由于带宽限制,网络拓扑结构已知,所以Gossip 不好,
抄袭 mapReduce 的框架,设计了一个有 Master 节点的 Gossip 算法
X) 顺利拿到Onsite, 一个印度 Manager 听我面的很好,对algorithm 和 backend很熟
悉,
于是 onsite 时特地来面我,题目都是behavior,你为啥有激情,为啥想来FB等等,
当然在问之前花了半小时介绍他的工作, 说他们走backend的多牛,多重要,
同时强烈推荐我去他的组,说有多激情,可以改变世界,我边听边在心里说:
我艹烙印
X)Onsite,给你一个函数 bool Prob() ,有50%的概率返回 True,50%的概率返回
False
请你用写一个新的函数:bool Prob2(double p)
要求 p 的概率返回 True, 1 - p 的概率返回 False
当然,肯定使用 Prob 了
这题我用的2分法,花了不少时间,,
然后问了fibonacci的 O(1) Space 或者 O(N) time 的解法,
刚好剩下5分钟问他问题,
结果大跌眼镜,内部推荐的朋友告诉我,这个人给了我个 Negative!!
HR 也没告诉我为啥,莫须有的罪名。
面试是看RP的,RP不好,总能碰到看你不顺眼的
X)Onsite 老题新酒,直方图,天上下雨,求能存多少水
E.G:
3,1,5 => 2
3,1,0,5 => 5
很假单的O(N)扫描就行
扩展是改成Online的算法,就是说:
有些地方高度随时会变,
E.G.
3,1,5 => 3,0,5 => 3
3,1,0,5 => 3,3,0,5 => 3
设计一个算法,最快的返回改变高度之后的结果
----
我的方法:
做题
------------------------------------------------------
非常感谢提供面经的人,没有这些面经,绝对没把握当场作出来!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
r*k
19
假设double p 二进制表示是:100011
call prob 6次
如果结果小于100011 返回p
大于返回 1-p
等于再call prob 6次
zz from Google

【在 b***u 的大作中提到】
: prob()怎么搞?
: 我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

avatar
z*n
20
Cong!
avatar
k*5
21
GX
排包子
avatar
p*2
22
恭喜大牛。刚看了一下题目。还没看回复。这道概率题我是这样考虑的
static boolean Prob2(double p, boolean expected)
{
if(p<0.5)
{
expected=!expected;
p=1-p;
}

if(Prob()==expected)
return expected;
else
{
return Prob2((p-0.5)/0.5, expected);
}
}
avatar
p*2
23
谁给一下那个老题的原题呢?那题我没做过。
avatar
P*c
24
F现在很多时候给的股票跟G的差不多,大家当然都选G. G的股票基本没有风险。F按
照100B的valuation给,风险很大,涨的potential不大,不怎么划算。
以前从G跳到F的人家拿多少股,你得看去年还有多少人跳过去。不如在G待一段时间再去
一个感觉有前途还很小的startup. F的revenue还只能看作G的一个部门吧,
不觉得从career的角度就有多大差别。比如说G的search组也就跟F差不多大吧, career
角度我觉得是差不多的。不拿出点实际的motivation来,就谈career就是bullshit.

【在 k***t 的大作中提到】
: 为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
: 高速发展的平台,而不是一个相对established环境。
: G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
: 尽管F以后如何还不一定,但向上空间同样不可限量。

avatar
p*2
25

再去
upside
G有一个不好就是拿到offer的时候不知道去哪个组。如果被分到一个不喜欢的组也没意
思吧?好像换组也得等18个月吧?那看来现在从待遇来说G已经Top了。要不怎么
Fortune 100 G今年排了第一。不过不知道收购moto之后会有不会有什么变化。moto人
可不少。

【在 P**********c 的大作中提到】
: F现在很多时候给的股票跟G的差不多,大家当然都选G. G的股票基本没有风险。F按
: 照100B的valuation给,风险很大,涨的potential不大,不怎么划算。
: 以前从G跳到F的人家拿多少股,你得看去年还有多少人跳过去。不如在G待一段时间再去
: 一个感觉有前途还很小的startup. F的revenue还只能看作G的一个部门吧,
: 不觉得从career的角度就有多大差别。比如说G的search组也就跟F差不多大吧, career
: 角度我觉得是差不多的。不拿出点实际的motivation来,就谈career就是bullshit.

avatar
r*k
26
moto应该和原来的g分开运营把。招人和发工资都分开。

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****2 的大作中提到】
:
: 再去
: upside
: G有一个不好就是拿到offer的时候不知道去哪个组。如果被分到一个不喜欢的组也没意
: 思吧?好像换组也得等18个月吧?那看来现在从待遇来说G已经Top了。要不怎么
: Fortune 100 G今年排了第一。不过不知道收购moto之后会有不会有什么变化。moto人
: 可不少。

avatar
p*2
27

那简历上能写Google吗?

【在 r*****k 的大作中提到】
: moto应该和原来的g分开运营把。招人和发工资都分开。
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
v*a
28
只是因为大学开始的时候,G就是dream company了

【在 k***t 的大作中提到】
: 为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
: 高速发展的平台,而不是一个相对established环境。
: G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
: 尽管F以后如何还不一定,但向上空间同样不可限量。

avatar
r*k
29
google moto啊。
就像现在intel mcafee。

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****2 的大作中提到】
:
: 那简历上能写Google吗?

avatar
p*2
30

大牛再贴几道F的题吧,应该还有其他吧?

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
p*2
31

那也有点用。起码有Google这个keyword了。如果老员工已经离开公司的能不能也用
Google Moto呢?

【在 r*****k 的大作中提到】
: google moto啊。
: 就像现在intel mcafee。
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
r*k
32
北京也要面了 ?

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****2 的大作中提到】
:
: 那也有点用。起码有Google这个keyword了。如果老员工已经离开公司的能不能也用
: Google Moto呢?

avatar
p*2
33

过了一面,现在想是不是拖两个月。因为复习的还不够,很多老题我还没做过。而且也
还没做到600道题。

【在 r*****k 的大作中提到】
: 北京也要面了 ?
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
r*k
34
我还没做到60题 好多都不会。。。

【在 p*****2 的大作中提到】
:
: 过了一面,现在想是不是拖两个月。因为复习的还不够,很多老题我还没做过。而且也
: 还没做到600道题。

avatar
y*z
35
这个是概率题。。
先生成 4个bit的 二进制 true代表1,false代表0
这样我们能生成0-15的 等概率的 distribution
然后 [0,15] 当中 选[0,10] -->[0,2](true), [3,9](false)
public class Solution {
/**
* @param args
*/

public void doit(){
int iterate = 10000000;
boolean valve = true;
StringBuilder s = new StringBuilder();
while (valve) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < 4; i++) {
if (Math.random() < 0.5) str.append('1');
else str.append('0');
}
double p = 0.3;
int target = (int) (p * 10);
int value = Integer.parseInt(str.toString(), 2);
if (value <= 9) {
// [0-15]-->[0,9]-->[0,2](1),[3,9](0);
if (value <= 2) {
s.append('1');
} else {
s.append('0');
}
} else
valve = true;
iterate--;
if (iterate < 0)
break;
}
int countone = 0, countzero = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '1')
countone++;
if (s.charAt(i) == '0')
countzero++;
}
int sum = countone + countzero;
System.out.println(((double)countone/(double)sum) + " " + ((double)
countzero/(double)sum));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
s.doit();
}
}
avatar
p*2
36

你也面F呀?

【在 r*****k 的大作中提到】
: 我还没做到60题 好多都不会。。。
avatar
r*k
37
要面啊 感觉没准备好
想cancel了

【在 p*****2 的大作中提到】
:
: 你也面F呀?

avatar
p*2
38

怎么cancel呀?跟recruiter说就行了?还是说delay两个月呢?

【在 r*****k 的大作中提到】
: 要面啊 感觉没准备好
: 想cancel了

avatar
r*k
39
delay啊 不知道行不行

【在 p*****2 的大作中提到】
:
: 怎么cancel呀?跟recruiter说就行了?还是说delay两个月呢?

avatar
i*e
40
恭喜!
之前你说你没拿到面试我说怎么可能呢?
好好加油,前途无量!
avatar
k*t
41
怎么说都行吧,感觉上recruiter就是个经纪人,双方的。
他也想做你这单生意,晚一两个月对他的收益没有影响,
除非他绝望到一个月只内再不成交就要走人了才会Push Client:)

【在 p*****2 的大作中提到】
:
: 怎么cancel呀?跟recruiter说就行了?还是说delay两个月呢?

avatar
l*a
42
问题是对某些特定team的特定职位。不见得是一直有opening的
除非你申请那些common positions

【在 k***t 的大作中提到】
: 怎么说都行吧,感觉上recruiter就是个经纪人,双方的。
: 他也想做你这单生意,晚一两个月对他的收益没有影响,
: 除非他绝望到一个月只内再不成交就要走人了才会Push Client:)

avatar
k*t
43
对特定职位的,那当然。
peking2是在面FG的common position吧。
可能要跟recruiter确认一下。从他的角度也有
motivation to encourage the client to prepare the interview。

【在 l*****a 的大作中提到】
: 问题是对某些特定team的特定职位。不见得是一直有opening的
: 除非你申请那些common positions

avatar
p*2
44

我还真是特定的。看来比较麻烦了。fail了两年只能还不能在申请了。

【在 k***t 的大作中提到】
: 对特定职位的,那当然。
: peking2是在面FG的common position吧。
: 可能要跟recruiter确认一下。从他的角度也有
: motivation to encourage the client to prepare the interview。

avatar
A*u
45
cs的吧 经验好丰富
avatar
l*a
46
why 2 years?
new rules for FB?

【在 p*****2 的大作中提到】
:
: 我还真是特定的。看来比较麻烦了。fail了两年只能还不能在申请了。

avatar
p*2
47

听vissa说的。

【在 l*****a 的大作中提到】
: why 2 years?
: new rules for FB?

avatar
k*t
48
那也需要权衡利弊。就算你是特定职位,看F这架势,
因该还有一段时间要大量全面找人。你那特定职位及其
相关职位应该也不止找一个人。
我觉得尽管时间长一点也不一定就好,但总要你自己
comfortable后再去才好,不留遗憾。
不过,至少赶在IPO股价可能的变化之前好一些。
Good Luck。

【在 p*****2 的大作中提到】
:
: 听vissa说的。

avatar
p*2
49

recruiter说我那职位就招,5,6个人,已经收到 几千份简历了。不过也无所谓了吧。
如果万一拿到offer又要大伤人品了。

【在 k***t 的大作中提到】
: 那也需要权衡利弊。就算你是特定职位,看F这架势,
: 因该还有一段时间要大量全面找人。你那特定职位及其
: 相关职位应该也不止找一个人。
: 我觉得尽管时间长一点也不一定就好,但总要你自己
: comfortable后再去才好,不留遗憾。
: 不过,至少赶在IPO股价可能的变化之前好一些。
: Good Luck。

avatar
r*k
50
为啥拿到offer又要大伤人品?

【在 p*****2 的大作中提到】
:
: recruiter说我那职位就招,5,6个人,已经收到 几千份简历了。不过也无所谓了吧。
: 如果万一拿到offer又要大伤人品了。

avatar
p*2
51

刚去了新公司,没几天就离职很伤RP。

【在 r*****k 的大作中提到】
: 为啥拿到offer又要大伤人品?
avatar
r*k
52
哈哈 是哦。
可以先拿offer 推迟报道

【在 p*****2 的大作中提到】
:
: 刚去了新公司,没几天就离职很伤RP。

avatar
j*l
53
厉害!
avatar
d*l
54
楼主终于来到了跟自身水平相符的位置上,祝贺!
avatar
y*o
55
恭喜,沾喜气
avatar
p*2
56

有没有人说说我这个解对不对?我测试了一下,work的还挺好的,没发现什么问题。

【在 p*****2 的大作中提到】
: 恭喜大牛。刚看了一下题目。还没看回复。这道概率题我是这样考虑的
: static boolean Prob2(double p, boolean expected)
: {
: if(p<0.5)
: {
: expected=!expected;
: p=1-p;
: }
:
: if(Prob()==expected)

avatar
r*k
57
太高深了 看不懂。。

【在 p*****2 的大作中提到】
:
: 有没有人说说我这个解对不对?我测试了一下,work的还挺好的,没发现什么问题。

avatar
p*2
58

思路很简单呀。就是先找到概率>=0.5的解。
然后调用Prob, 如果得到需要的解,就结束。如果没有得到需要的解,那么已经浪费
了0.5的概率了。剩下的概率就是P-0.5.
因为得到的解是相反的答案,而且概率是0.5, 所以就要在这个0.5里得到(P-0.5)的概
率。那就是(P-0.5)/0.5。
比如要得到0.6的概率true
如果Prob返回true, 就结束。
如果返回false,那么得到true的概率就剩0.1了。
而得到false的概率是0.5, 在0.5里得到0.1就需要下一次调Fab得到true的概率是0.2.
这样的到true的总概率就是
0.5+0.5*0.2=0.6

【在 r*****k 的大作中提到】
: 太高深了 看不懂。。
avatar
w*b
59
cong
avatar
y*g
60
太牛了

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
z*n
61
不错,
不过题目只要求一个参数,bool Prob2(double p),返回随机值0、1;
但这个解法多带了个参数,而且返回的是确定值,变成按照概率p返回固定值expected
感觉先将p转化为二进制,再进行比较的思路更好理解些

.

【在 p*****2 的大作中提到】
:
: 思路很简单呀。就是先找到概率>=0.5的解。
: 然后调用Prob, 如果得到需要的解,就结束。如果没有得到需要的解,那么已经浪费
: 了0.5的概率了。剩下的概率就是P-0.5.
: 因为得到的解是相反的答案,而且概率是0.5, 所以就要在这个0.5里得到(P-0.5)的概
: 率。那就是(P-0.5)/0.5。
: 比如要得到0.6的概率true
: 如果Prob返回true, 就结束。
: 如果返回false,那么得到true的概率就剩0.1了。
: 而得到false的概率是0.5, 在0.5里得到0.1就需要下一次调Fab得到true的概率是0.2.

avatar
i*e
62
peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。

.

【在 p*****2 的大作中提到】
:
: 思路很简单呀。就是先找到概率>=0.5的解。
: 然后调用Prob, 如果得到需要的解,就结束。如果没有得到需要的解,那么已经浪费
: 了0.5的概率了。剩下的概率就是P-0.5.
: 因为得到的解是相反的答案,而且概率是0.5, 所以就要在这个0.5里得到(P-0.5)的概
: 率。那就是(P-0.5)/0.5。
: 比如要得到0.6的概率true
: 如果Prob返回true, 就结束。
: 如果返回false,那么得到true的概率就剩0.1了。
: 而得到false的概率是0.5, 在0.5里得到0.1就需要下一次调Fab得到true的概率是0.2.

avatar
i*e
63
那参数第一次叫函数时传 expected = true 就行了。加一个wrapper也行。

expected

【在 z*****n 的大作中提到】
: 不错,
: 不过题目只要求一个参数,bool Prob2(double p),返回随机值0、1;
: 但这个解法多带了个参数,而且返回的是确定值,变成按照概率p返回固定值expected
: 感觉先将p转化为二进制,再进行比较的思路更好理解些
:
: .

avatar
c*h
64
gxgx
avatar
H*e
65
我run了下,误差还挺大的
你run了么?

【在 i**********e 的大作中提到】
: peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
: 不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
: 像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。
:
: .

avatar
a*m
66
lol. "然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了"
赞!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
c*p
67
My 2 cents:
bool prob2(double p)
{
int q;

while ((q =prob()) == (int)(p*=2)) {p -= (int)p;};
return (q < (int)p );
}

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
p*2
68

这是我的测试程序。你测的什么数据?我试了几个P都还行。
import java.util.*;
public class test {
static boolean Prob()
{
Random rand=new Random();
return rand.nextBoolean();
}

static boolean Prob2(double p, boolean expected)
{
if(p<0.5)
{
expected=!expected;
p=1-p;
}

if(Prob()==expected)
return expected;
else
{
return Prob2((p-0.5)/0.5, expected);
}
}

public static void main(String[] args)
{
int count=0;
int times=10000;
double p=0.3;
boolean expected=true;

for(int i=0;i{
if(Prob2(p,expected)==expected)
count++;
}

System.out.println((double)count/times);
}
}

【在 H***e 的大作中提到】
: 我run了下,误差还挺大的
: 你run了么?

avatar
p*2
69

多谢大牛。

【在 i**********e 的大作中提到】
: peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
: 不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
: 像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。
:
: .

avatar
H*e
70
我run误差9%的概览啊
100000 runs

【在 p*****2 的大作中提到】
:
: 多谢大牛。

avatar
p*2
71

我的结果:
1. 0.08948
2. 0.0902
3. 0.08971
4. 0.08925
5. 0.09044
还是很接近呀。

【在 H***e 的大作中提到】
: 我run误差9%的概览啊
: 100000 runs

avatar
H*e
72
when i run it
p = 0.09;
and the result is 0.18274
...why?

【在 p*****2 的大作中提到】
:
: 我的结果:
: 1. 0.08948
: 2. 0.0902
: 3. 0.08971
: 4. 0.08925
: 5. 0.09044
: 还是很接近呀。

avatar
p*2
73

能post你的code吗?

【在 H***e 的大作中提到】
: when i run it
: p = 0.09;
: and the result is 0.18274
: ...why?

avatar
H*e
74
就用的你的exact code啊。。。

【在 p*****2 的大作中提到】
:
: 能post你的code吗?

avatar
p*2
75

copy/paste的?

【在 H***e 的大作中提到】
: 就用的你的exact code啊。。。
avatar
H*e
76
yes.. :(

【在 p*****2 的大作中提到】
:
: copy/paste的?

avatar
p*2
77

你试过了你那里random的结果是均匀的吗?

【在 H***e 的大作中提到】
: yes.. :(
avatar
l*i
78
double在计算机里是 基数 乘 指数
0.00344 = 0.344 * E-3
Update: 我记错了,指数也是基于2的,所以也是work的。

【在 r*****k 的大作中提到】
: 假设double p 二进制表示是:100011
: call prob 6次
: 如果结果小于100011 返回p
: 大于返回 1-p
: 等于再call prob 6次
: zz from Google

avatar
q*x
79
根本没看懂。

【在 i**********e 的大作中提到】
: peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
: 不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
: 像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。
:
: .

avatar
d*p
80
我也是这么想的,迭代一下就ok

【在 p*****2 的大作中提到】
:
: 你试过了你那里random的结果是均匀的吗?

avatar
l*i
81
bool Rand2(){ return true or false equally.};
// p is between 0 and 1
// return false for probability of p
bool PCal(double p)
{
p *= 2;
bool b = Rand2();
while(p != 0 && p! = 1)
{
b = Rand2();
if (!b && p > 1)
return false;
else (b && p < 1)
return true;
else
p = p *2;
}
return b;
}
avatar
h*e
82
楼上忘记每次如果p大于1 要把p减1.。。
avatar
g*i
83
恭喜,楼主很强啊,遇到的题都不容易
avatar
p*n
84
prob的那题:
借助于prob,可以如此进行算法:
设第k次调用prob前,目标区间是[a,b];k=1,2,…。k=1时a=0,b=1。对于这一次调用,
假想prob的工作方式是:随机一个[a,b]上的均匀分布数,如果这个数小于等于(a+b)/2
,则返回true;否则返回false。设x=a+p*(b-a),prob2的工作方式可假想为:随机一
个[a,b]上的均匀分布数,如果这个数小于等于x,则返回true;否则返回false。于是
可按两种情况处理:
(1) x <= (a+b)/2
如果调用prob返回true,表明prob产生的随机数在[a,(a+b)/2]之间,但无法确定这个
随机数是否在[a,x]之间;此时令a’=a, b’=(a+b)/2,继续在[a’,b’]上重复上面的
过程(第k+1次)。
如果调用prob返回false,表明prob产生的随机数在((a+b)/2,b]之间,必不可能在[a,x
]之间,此时prob2可以返回false。
(2) x > (a+b)/2
如果调用prob返回true,表明prob产生的随机数在[a,(a+b)/2]之间,此时这个随机数
肯定在[a,x]之间,prob2返回true。
如果调用prob返回false,表明prob产生的随机数在((a+b)/2,b]之间,但无法确定这个
随机数是否在[a,x]之间;此时令a’=(a+b)/2,b’=b,继续在[a’,b’]上重复上面的
过程(第k+1次)。
算法很快,是指数收敛的。

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
g*i
85
对,还要避免运气不好的无限循环,循环限制在double的bit位数次就可以了.

【在 h********e 的大作中提到】
: 楼上忘记每次如果p大于1 要把p减1.。。
avatar
D*g
86
prob那题,我的code:
static boolean prob() {
Random r = new Random();
if (r.nextDouble() < 0.5) {
return true;
}

return false;
}
static boolean prob(double p) {
double EPS = 1e-8;
if (p >= 1.0) {
return true;
}
if (p <= 0.0) {
return false;
}

int bitPos = 0;
while (p > EPS) {
bitPos ++;
p = p * 2;
if (p >= 1.0) {
// We need to return true with prob 2^(-bitPos),
this can be achieved by calling prob() with bitPos times and return true if
all true
// All false is the prerequesite state for checking
next 1's.
boolean allTrue = true, allFalse = true;
for (int i = 0; i < bitPos; ++i) {
boolean flip = prob();
allTrue = allTrue && flip;
allFalse = allFalse && !flip;
EPS = EPS * 2;
}

if (allTrue) {
return true;
}
if (!allFalse) {
return false;
}
// reset
bitPos = 0;
p = p - 1.0;
}
}

return false;
}

static void testProb() {
int c = 1000000;
double p = 0.75;
int trueCount = 0;
for (int i = 0; i < c; ++i) {
if (prob(p)) {
trueCount++;
}
}

System.out.println("p--" + p + ", tc%--" + (double)trueCount/c);
p=0.125;
trueCount = 0;
for (int i = 0; i < c; ++i) {
if (prob(p)) {
trueCount++;
}
}

System.out.println("p--" + p + ", tc%--" + (double)trueCount/c);

p=0.33;
trueCount = 0;
for (int i = 0; i < c; ++i) {
if (prob(p)) {
trueCount++;
}
}

System.out.println("p--" + p + ", tc%--" + (double)trueCount/c);
}

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
c*e
87
边听边在心里说:我艹烙印. 哈哈!
avatar
s*k
88
cong
avatar
a*2
89
能不能详细贴一下那个直方题是什么题目

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
p*2
90

关于我那个解结果不对的问题。我是在Macbook上测试的,结果很接近。昨天跟人讨论
,别人是在Windows上测试的。我今天在Linux上测试了一下,确实得到了不正确的结果
。研究了一下发现,Linux上连续的同一个结果的情况比较严重。这里是我run 100次
rand.nextBoolean的结果在Macbook上,等下贴一下linux上的结果。
false
false
false
true
false
false
true
false
true
true
true
true
true
false
true
true
false
false
false
false
true
false
true
false
false
true
true
true
false
false
false
true
true
false
false
false
true
true
false
false
false
false
true
true
false
true
false
false
true
false
true
false
true
true
true
false
false
true
true
false
true
true
true
false
false
false
false
true
true
false
true
false
false
true
true
false
true
false
false
true
true
true
false
false
false
false
true
true
true
false
true
false
true
true
false
false
true
false
true
true

【在 a****2 的大作中提到】
: 能不能详细贴一下那个直方题是什么题目
avatar
p*2
91
Linux上的结果
true
true
false
true
false
false
true
false
true
false
false
false
false
true
true
true
false
true
true
true
true
false
false
true
false
true
false
false
true
false
false
false
false
true
false
true
false
false
true
false
false
false
true
true
false
true
true
false
false
true
true
true
true
false
false
true
false
true
false
false
false
false
true
false
true
false
false
true
true
true
true
true
true
true
true
true
true
false
false
true
false
true
true
false
true
false
true
true
true
true
false
true
false
true
false
false
false
false
true
true
avatar
p*2
92
Linux上会出现连续10个true,在Mac上最多连续出现的次数是4次。应该是这个影响了
结果。
avatar
p*2
93
又做了一个测试,当产生100000个随机boolean的时候
Mac上连续结果的最大次数是10-20这个区间,而Linux上是160-170这个区间。看样子
Mac的随机性要比Linux更高。所以Mac上运行起来很接近结果。
avatar
o*y
94
random 函数应该是伪随机,有确定的算法,不是真正的随机。
你new 一个Random 的时候,如果带的seed参数一样,
每次的结果应该都是一样的,我觉得应该是平台无关。
如果new 一个Random不带参数,自动用当前的时间做seed.
public Random() { this(System.currentTimeMillis()); }
所以你取得什么结果,取决于你的seed.如果不带seed,
取决于你运行的时间。

【在 p*****2 的大作中提到】
: 又做了一个测试,当产生100000个随机boolean的时候
: Mac上连续结果的最大次数是10-20这个区间,而Linux上是160-170这个区间。看样子
: Mac的随机性要比Linux更高。所以Mac上运行起来很接近结果。

avatar
p*2
95

random是Java自己实现的?不是调的OS的random?

【在 o******y 的大作中提到】
: random 函数应该是伪随机,有确定的算法,不是真正的随机。
: 你new 一个Random 的时候,如果带的seed参数一样,
: 每次的结果应该都是一样的,我觉得应该是平台无关。
: 如果new 一个Random不带参数,自动用当前的时间做seed.
: public Random() { this(System.currentTimeMillis()); }
: 所以你取得什么结果,取决于你的seed.如果不带seed,
: 取决于你运行的时间。

avatar
f*t
96
概率那题,coding不是重点,关键在于算法。想了一下有这么个思路,时间紧没有仔细
斟酌,所以不一定对,供参考而已。
Prob()产生True和False的概率都是0.5,就等价于黑箱里一红一黑两个球,让你随机哪
一个,那拿到红色的和黑色球的概率都是一半,这个很容易理解。
假如现在让你连续拿两次(当然是每次拿完之后都放回黑箱去),都能拿到红球的概率
是0.5 x 0.5 = 0.25;所以对于Prob2(double p),假如p=0.25,那你知道怎么去做了。
问题是p可以任意取,比如说现在我让p=0.75那怎么办?考虑这么一个概率题,假如下
面这件事情最后能称为“成功”的概率是多少:最多让你试两回,第一回只让你取一个
球,假如取到红色的,就马上成功了不用做下去;假如不是红色的,再给你一次机会再
拿一次,假如这回也能拿到红色的,也算你成功了。这个事情成功的概率有多大呢?答
案不难:0.5 + 0.5 x 0.5 = 0.75,请注意这里的条件概率和概率相加时对于互斥事件
的处理。
再来一个复杂一点的,p=0.765625怎么办?请考虑下面这个事件成功的概率:最多让你
试三回,第一回是红色的马上成功了;第一回不成功的话给你第二次机会,再取到红色
的也算你成功;万一很不幸运第二回还不成功那就给你最后一次机会,再拿一次球,假
如是红色的话最后也算是成功的。成功概率是这样的:0.5 + 0.5 x 0.5 + 0.5 x 0.5
x 0.5 = 0.765625。
最后我们要知道这么一个数学知识:对于任何一个大于0小于1的小数,它都可以表达成
某些0.5的幂次项的和。所以假如你能想办法把p表达成某些0.5的幂次项的和,这道题
你就知道怎样做了。
avatar
D*g
97
直方图那题,我的code:
static int histogramHoldRainWater(final int[] hist) {
if (hist == null || hist.length == 0) {
throw new IllegalArgumentException();
}

if (hist.length <= 2) {
return 0;
}
int sum = 0;
int histLeft = 0;
int histRight = 0;
while (histLeft < hist.length) {
while (histLeft + 1 < hist.length && hist[histLeft] <= hist[
histLeft+1]) {
histLeft ++;
}

if (histLeft >= hist.length - 2) {
break;
}

histRight = histLeft + 1;
while (histRight + 1 < hist.length && hist[histRight] >= hist[
histRight + 1]) {
histRight ++;
}

if (histRight == hist.length - 1) {
break;
}

while (histRight + 1 < hist.length && hist[histRight] <= hist[
histRight + 1]) {
histRight ++;
}

int hight = Math.min(hist[histLeft], hist[histRight]);
for (int i = histLeft + 1; i < histRight; ++i) {
sum += hight - hist[i];
}

histLeft = histRight;
}
return sum;
}

static void testHistogramHoldRainWater() {
int[] a = new int[] {3,1,5};
System.out.println("Water for " + Arrays.toString(a) + " is " +
histogramHoldRainWater(a));

a = new int[] {3,1,0,5};
System.out.println("Water for " + Arrays.toString(a) + " is " +
histogramHoldRainWater(a));
}

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
p*2
98
这是我的直方图代码
public class test2 {
static int water(int[] arr)
{
int i=0;
int j=arr.length-1;
int count=0;

while(i{
while(ii++;

while(j>i && arr[j]j--;

if(i==j)
break;

int start;
int low;
boolean direct=true;
if(arr[i]<=arr[j])
{
start=i+1;
low=arr[i];
direct=true;
}
else
{
start=j-1;
low=arr[j];
direct=false;
}

while(arr[start]{
count+=low-arr[start];

if(direct)
start++;
else
start--;
}

if(direct)
i=start;
else
j=start;
}

return count;

}
public static void main(String[] args)
{
int[][] q=new int[][] {{3,1,5},
{3,1,0,5},
{1,2,3},
{3,2,1},
{1,2,3,2,1},
{5,4,3,6,2,3}};
int[] a=new int[] {2,5,0,0,0,4};

for(int i=0;i{
int r=water(q[i]);
if(a[i]==r)
System.out.print("[Pass]");
else
System.out.print("[Fail]");

System.out.println("expected:"+a[i]+" actual:"+r);
}
}
}
avatar
H*e
99
高度会改变的啊。

【在 p*****2 的大作中提到】
: 这是我的直方图代码
: public class test2 {
: static int water(int[] arr)
: {
: int i=0;
: int j=arr.length-1;
: int count=0;
:
: while(i: {

avatar
p*2
100

我还没考虑这个扩展。高度会改变是什么意思呀。能讲讲吗?

【在 H***e 的大作中提到】
: 高度会改变的啊。
avatar
p*2
101

高度可以任意改变,还是有一定限制和规律呢?

【在 H***e 的大作中提到】
: 高度会改变的啊。
avatar
H*e
102
我也不知道
万一变成最高的,貌似就要重算了
不知道有什么trick没有

【在 p*****2 的大作中提到】
:
: 高度可以任意改变,还是有一定限制和规律呢?

avatar
p*2
103

如果变化没有规律,变得乱七八糟的肯定得重算呀。所以,题目的要求还不清除。

【在 H***e 的大作中提到】
: 我也不知道
: 万一变成最高的,貌似就要重算了
: 不知道有什么trick没有

avatar
H*e
104
我assume是只变化一根
还有你知道第一题那个什么cup题是啥啊? 能不能给个timu

【在 p*****2 的大作中提到】
:
: 如果变化没有规律,变得乱七八糟的肯定得重算呀。所以,题目的要求还不清除。

avatar
p*2
105

我找一下。

【在 H***e 的大作中提到】
: 我assume是只变化一根
: 还有你知道第一题那个什么cup题是啥啊? 能不能给个timu

avatar
p*2
106

Some engineers got tired of dealing with all the different ways of encoding
status messages, so they decided to invent their own. In their new scheme,
an encoded status message consists of a sequence of integers representing
the characters in the message, separated by spaces. Each integer is between
1 and M, inclusive. The integers do not have leading zeroes. Unfortunately
they decided to compress the encoded status messages by removing all the
spaces!
Your task is to figure out how many different encoded status messages a
given compressed status message could have originally been. Because this
number can be very large, you should return the answer modulo 4207849484 (
0xfaceb00c in hex).
For example, if the compressed status message is "12" it might have
originally been "1 2", or it might have originally been "12". The compressed
status messages are between 1 and 1000 characters long, inclusive. Due to
database corruption, a compressed status may contain sequences of digits
that could not result from removing the spaces in an encoded status message.
Input
The input begins with a single integer, N, the number of compressed status
messages you must analyze. This will be followed by N compressed status
messages, each consisting of an integer M, the highest character code for
that database, then the compressed status message, which will be a string of
digits each in the range '0' to '9', inclusive. All tokens in the input
will be separated by some whitespace.
Output
For each of the test cases numbered in order from 1 to N, output "Case #i: "
followed by a single integer containing the number of different encoded
status messages that could be represented by the corresponding compressed
sequence modulo 4207849484. If none are possible, output a 0.
Constraints
5 <= N <= 25
2 <= M <= 255
1 <= length of encoded status <= 1000
Example inputExample output
5
12
12
255
219
30
1234321
2
101
70 8675309
Case #1: 2
Case #2: 4
Case #3: 6
Case #4: 0
Case #5: 2

【在 H***e 的大作中提到】
: 我assume是只变化一根
: 还有你知道第一题那个什么cup题是啥啊? 能不能给个timu

avatar
f*e
107
赞最后一句。前阵有人在说用linkedin数据来做一个app,就是把从这些hot company
跳去startup的人统计一下人数,看哪些startup占据最多,那就是你该看的公司了。
这些数据现在在linkedin上不显示,因为网站上显示的是绝对数字最多的公司,那样
大公司自然会被列出来,而不是startup。谁有功夫把这个app做出来造福大家吧。

【在 P*****f 的大作中提到】
: 谁给钱多去谁。
: G跳Twitter/Zynga的更多,Facebook也算比较大公司了,IPO搞头不大。要去动态的,
: 观察下从这些公司跳出来的去哪就可以了

avatar
y*g
108
特别早期的startup fresh也不太容易进,而且h1b 绿卡政策很可能一般

【在 f**e 的大作中提到】
: 赞最后一句。前阵有人在说用linkedin数据来做一个app,就是把从这些hot company
: 跳去startup的人统计一下人数,看哪些startup占据最多,那就是你该看的公司了。
: 这些数据现在在linkedin上不显示,因为网站上显示的是绝对数字最多的公司,那样
: 大公司自然会被列出来,而不是startup。谁有功夫把这个app做出来造福大家吧。

avatar
l*i
109
bool Rand2(){ return true or false equally.};
// p is between 0 and 1
// return false for probability of p
bool PCal(double p)
{
p *= 2;
bool b = Rand2();
while(p != 0 && p! = 1)
{
b = Rand2();
if (!b && p > 1)
return false;
else (b && p < 1)
return true;
else if ( p > 1)
p = (p-1) *2;
else
p * =2;
}
return b;
}
avatar
p*2
110
刚才想了想那个变化长度的。感觉可以转换为interval的问题,但是写起code来挺麻烦
的。
avatar
i*e
111
我刚在linux上运行了,没有这方面的问题,不过我的程序是C++ 不是Java。
我测试了你的算法,返回结果都算满意,而且运行越多次,返回的结果越接近理想的 p
值。
你的算法不单简洁,而且复杂度是最优的,递归是 average 两次就返回答案。
expected # calls = 1*0.5 + 2*0.5^2 + 3*0.5^3 + ...
= Summation( k * 0.5^k ), k = 1 .. n
= 2 - (n+2)/2^n
When n = infinity,
expected # calls = 2
贴下code方便大家做测试:
#include
#include
#include
#include
using namespace std;
bool rand2() {
return (rand() % 2 == 0);
}
unsigned long long totalCalls = 0;
bool Prob2(double p, bool expected = true) {
totalCalls++;
if (p < 0.5) {
expected = !expected;
p = 1-p;
}
if (rand2()) {
return expected;
} else {
return Prob2((p-0.5)/0.5, expected);
}
}
int main() {
srand(time(NULL));
unsigned long long n = 100000000;
unsigned long long total = 0;
double p = 0.903013;
unsigned long long calls = 0;
for (unsigned long long i = 0; i < n; i++) {
totalCalls = 0;
if (Prob2(p)) {
total++;
}
calls += totalCalls;
}
double statisticP = ((double)total / n);
cout << "Theoretical p = " << p << endl;
cout << "Prob2 statistical p = " << statisticP << endl;
cout << "Difference from theoretical p: " << (fabs(statisticP - p) / p *
100.0) << "%" << endl;
cout << "Average # calls = " << ((double)calls / n) << endl;
}

【在 p*****2 的大作中提到】
: Linux上会出现连续10个true,在Mac上最多连续出现的次数是4次。应该是这个影响了
: 结果。

avatar
p*2
112
多谢大牛confirm。

p

【在 i**********e 的大作中提到】
: 我刚在linux上运行了,没有这方面的问题,不过我的程序是C++ 不是Java。
: 我测试了你的算法,返回结果都算满意,而且运行越多次,返回的结果越接近理想的 p
: 值。
: 你的算法不单简洁,而且复杂度是最优的,递归是 average 两次就返回答案。
: expected # calls = 1*0.5 + 2*0.5^2 + 3*0.5^3 + ...
: = Summation( k * 0.5^k ), k = 1 .. n
: = 2 - (n+2)/2^n
: When n = infinity,
: expected # calls = 2
: 贴下code方便大家做测试:

avatar
t*i
113
大牛啊!!!!
恭喜恭喜!
avatar
p*2
114
多谢大牛更新。
直方图那个我觉得可以用interval来解。
avatar
R*t
115
恭喜恭喜
沾喜气 嘻嘻
avatar
l*0
116
感觉你这个FB的PhD package偏低啊~
avatar
H*1
117
多谢分享!
F的4800K RSU相当于多少啊?
G的phd standard 是 127K base么?

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
g*y
118
怎么可能4800k
是4800 shares吧 哈哈

【在 H*****1 的大作中提到】
: 多谢分享!
: F的4800K RSU相当于多少啊?
: G的phd standard 是 127K base么?

avatar
S*e
119
感谢楼主分享面经!

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
y*g
120
很不错吧? 不过我也不知道fb给phD是多少
说偏低偏高的说一个标准的?

【在 l*******0 的大作中提到】
: 感觉你这个FB的PhD package偏低啊~
avatar
c*e
121
1 #include
2 #include
3 #include
4
5 int prob()
6 {
7 return rand() % 2;
8 }
9
10 int prob(double req_, double has_)
11 {
12 int a = prob();
13
14 if (req_ == has_)
15 return a;
16 else if (req_ > has_)
17 {
18 if (a == 1)
19 return a;
20 else
21 return prob(req_ - has_, has_ / 2);
22 }
23 else
24 {
25 if (a == 0)
26 return a;
27 else
28 return prob(req_, has_ / 2);
29 }
30 }
31
32 int main()
33 {
34 srand(time(NULL));
35
36 int k = 0, runs = 100000;
37 ..
38 for (int i = 0; i < runs; ++i)
39 k += prob(0.3, 0.5);
40
41 std::cout << k * 1.0 / runs << "\n";
42 }

【在 b***u 的大作中提到】
: prob()怎么搞?
: 我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

avatar
f*t
122
太牛了,忍不住回帖祝贺!
avatar
h*g
123
这个想法能不能展开讲讲?
thanks~

【在 p*****2 的大作中提到】
: 刚才想了想那个变化长度的。感觉可以转换为interval的问题,但是写起code来挺麻烦
: 的。

avatar
p*2
124

就是把能盛水的各个部分做成各个interval来存储。一旦有高度的变化,就根据相应的
情况调整intervals。比如merge,create new interval, delete interval etc. 各种
情况都要考虑,code会比较麻烦。

【在 h*****g 的大作中提到】
: 这个想法能不能展开讲讲?
: thanks~

avatar
s*n
125


【在 p*****2 的大作中提到】
:
: 就是把能盛水的各个部分做成各个interval来存储。一旦有高度的变化,就根据相应的
: 情况调整intervals。比如merge,create new interval, delete interval etc. 各种
: 情况都要考虑,code会比较麻烦。

avatar
s*n
126
peking2那个翻转"expected"太深奥了,这样行不行?
static boolean Prob(double p)
{
while(p) {
int bit = p>0.5?1:0;
int r = rand2();
if (relse if (r>bit) return false;
p=p*2;
if (bit) p=p-1;
}
return false;
}
avatar
P*c
127
赞。good choice. If G's base is 127k, considering return and risk it is
still the better choice.

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
g*n
128
Cong!

Update:不少人发信问package和题目解答,update一下吧:第一题详细在 http://www.mitbbs.com/article/JobHun........
★ Sent from iPhone App: iReader Mitbbs Lite 7.39

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
u*l
129
hehe, 4800k RSU , that is a lot.

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
h*7
130
本科拿这么好的package起点真是不错,年轻有为啊。:) Cong lz,聪明能干。
avatar
H*r
131
直方题怎么扫瞄一次得到结果? 怎么感觉得上stack?

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
b*t
132
两个指针一左一右往中间走
类似 sorted array之2sum problem

【在 H****r 的大作中提到】
: 直方题怎么扫瞄一次得到结果? 怎么感觉得上stack?
avatar
H*r
133
cool!
这个问题要改成两维直方阵求水容积会更有趣?

【在 b******t 的大作中提到】
: 两个指针一左一右往中间走
: 类似 sorted array之2sum problem

avatar
v*a
134
Update:
不少人发信问package和题目解答,update一下吧:
第一题详细在 http://www.mitbbs.com/article/JobHunting/32055617_0.html
感谢 peking2 同学贴上来
第二题我当时的算法和 pigsolomon 朋友的差不多:
http://www.mitbbs.com/article/JobHunting/32055195_0.html
是其中一种正确的算法,肯定有更好的,期待大牛
第三题的扩展
每次只有一根柱子变化,减少或者增加k单位
我没有做出来,只是提了一下RMQ或许可以用在里面,面试官没有肯定
不过这个面试结果是 positive,无解了
Package:
FB在知道我有G offer的情况下给了我 entry BS level package 85k base +
3000RSU,G在知道FB给我这么多之后,还是很大方的给了我 PhD Standard,然后我当场就签
了,是我现在工资的8倍了,知足常乐!
随后FB又改成了PhD standard 115k + 4800k RSU + 15k signingbonus, 不过已经签
了,base比G少点,股票多不少
好几个朋友问为啥不去F,只是个人大学时的dream company是Google,更主要的是那边食堂比FB
的好吃
------------------------------------------
积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
FB的新题:
X)Initial Onsite,
题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
于是把公式写出来,顺便程序也写出来,
然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
deploy 到所有机器里,大概百万台,
怎么设计一个系统。
这个新题,正好想到了Gossip,
于是扯了一通 Gossip 算法,给出复杂度O(LogN) 就可以发送完,
随后发现由于带宽限制,网络拓扑结构已知,所以Gossip 不好,
抄袭 mapReduce 的框架,设计了一个有 Master 节点的 Gossip 算法
X) 顺利拿到Onsite, 一个印度 Manager 听我面的很好,对algorithm 和 backend很熟
悉,
于是 onsite 时特地来面我,题目都是behavior,你为啥有激情,为啥想来FB等等,
当然在问之前花了半小时介绍他的工作, 说他们走backend的多牛,多重要,
同时强烈推荐我去他的组,说有多激情,可以改变世界,我边听边在心里说:
我艹烙印
X)Onsite,给你一个函数 bool Prob() ,有50%的概率返回 True,50%的概率返回
False
请你用写一个新的函数:bool Prob2(double p)
要求 p 的概率返回 True, 1 - p 的概率返回 False
当然,肯定使用 Prob 了
这题我用的2分法,花了不少时间,,
然后问了fibonacci的 O(1) Space 或者 O(N) time 的解法,
刚好剩下5分钟问他问题,
结果大跌眼镜,内部推荐的朋友告诉我,这个人给了我个 Negative!!
HR 也没告诉我为啥,莫须有的罪名。
面试是看RP的,RP不好,总能碰到看你不顺眼的
X)Onsite 老题新酒,直方图,天上下雨,求能存多少水
E.G:
3,1,5 => 2
3,1,0,5 => 5
很假单的O(N)扫描就行
扩展是改成Online的算法,就是说:
有些地方高度随时会变,
E.G.
3,1,5 => 3,0,5 => 3
3,1,0,5 => 3,3,0,5 => 3
设计一个算法,最快的返回改变高度之后的结果
----
我的方法:
做题
------------------------------------------------------
非常感谢提供面经的人,没有这些面经,绝对没把握当场作出来!
avatar
b*n
135
gxgx!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
b*u
136
prob()怎么搞?
我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
m*s
137
比如p=0.3
call prob->
>0.5:返回失败
<0.5:call prob->
<0.5:返回成功
>0.5(0.25-0.5):call prob。。。
期望大概是扔3次

【在 b***u 的大作中提到】
: prob()怎么搞?
: 我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

avatar
b*u
138
没看懂。怎么generalize?

【在 m******s 的大作中提到】
: 比如p=0.3
: call prob->
: >0.5:返回失败
: <0.5:call prob->
: <0.5:返回成功
: >0.5(0.25-0.5):call prob。。。
: 期望大概是扔3次

avatar
h*n
139
so strong! mark

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
r*n
140
cong!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
z*w
141
gxgx!
avatar
B*5
142
赞牛人,恭喜~
avatar
i*r
143
我现在对烙印真的有心理阴影
我面F的时候也是个烙印

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
n*a
144
cong!
avatar
w*n
145
牛~请问为啥不去F啊?
avatar
w*n
146
牛~请问为啥不去F啊?
avatar
k*t
147
为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
高速发展的平台,而不是一个相对established环境。
G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
尽管F以后如何还不一定,但向上空间同样不可限量。

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
P*f
148
谁给钱多去谁。
G跳Twitter/Zynga的更多,Facebook也算比较大公司了,IPO搞头不大。要去动态的,
观察下从这些公司跳出来的去哪就可以了

【在 k***t 的大作中提到】
: 为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
: 高速发展的平台,而不是一个相对established环境。
: G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
: 尽管F以后如何还不一定,但向上空间同样不可限量。

avatar
P*f
149
welcome to G

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
k*t
150
同意向钱看和向前看:) 说说从这些公司跳出来的都去哪?

【在 P*****f 的大作中提到】
: 谁给钱多去谁。
: G跳Twitter/Zynga的更多,Facebook也算比较大公司了,IPO搞头不大。要去动态的,
: 观察下从这些公司跳出来的去哪就可以了

avatar
m*a
151
Congrats!
啥叫带宽限制,toplogic已知 -> master 节点 Gossip

积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
FB的新题:
X)Initial Onsite,
题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
于是把公式写出来,顺便程序也写出来,
然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
deploy 到所有机器里,大概百万台,
怎么设计一个系统。
这个新题,正好想到了Gossip,
于是扯了一通 Gossip 算法,给出复杂度O(LogN) 就可以发送完,
随后发现由于带宽限制,网络拓扑结构已知,所以Gossip 不好,
抄袭 mapReduce 的框架,设计了一个有 Master 节点的 Gossip 算法
X) 顺利拿到Onsite, 一个印度 Manager 听我面的很好,对algorithm 和 backend很熟
悉,
于是 onsite 时特地来面我,题目都是behavior,你为啥有激情,为啥想来FB等等,
当然在问之前花了半小时介绍他的工作, 说他们走backend的多牛,多重要,
同时强烈推荐我去他的组,说有多激情,可以改变世界,我边听边在心里说:
我艹烙印
X)Onsite,给你一个函数 bool Prob() ,有50%的概率返回 True,50%的概率返回
False
请你用写一个新的函数:bool Prob2(double p)
要求 p 的概率返回 True, 1 - p 的概率返回 False
当然,肯定使用 Prob 了
这题我用的2分法,花了不少时间,,
然后问了fibonacci的 O(1) Space 或者 O(N) time 的解法,
刚好剩下5分钟问他问题,
结果大跌眼镜,内部推荐的朋友告诉我,这个人给了我个 Negative!!
HR 也没告诉我为啥,莫须有的罪名。
面试是看RP的,RP不好,总能碰到看你不顺眼的
X)Onsite 老题新酒,直方图,天上下雨,求能存多少水
E.G:
3,1,5 => 2
3,1,0,5 => 5
很假单的O(N)扫描就行
扩展是改成Online的算法,就是说:
有些地方高度随时会变,
E.G.
3,1,5 => 3,0,5 => 3
3,1,0,5 => 3,3,0,5 => 3
设计一个算法,最快的返回改变高度之后的结果
----
我的方法:
做题
------------------------------------------------------
非常感谢提供面经的人,没有这些面经,绝对没把握当场作出来!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
r*k
152
假设double p 二进制表示是:100011
call prob 6次
如果结果小于100011 返回p
大于返回 1-p
等于再call prob 6次
zz from Google

【在 b***u 的大作中提到】
: prob()怎么搞?
: 我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

avatar
z*n
153
Cong!
avatar
k*5
154
GX
排包子
avatar
p*2
155
恭喜大牛。刚看了一下题目。还没看回复。这道概率题我是这样考虑的
static boolean Prob2(double p, boolean expected)
{
if(p<0.5)
{
expected=!expected;
p=1-p;
}

if(Prob()==expected)
return expected;
else
{
return Prob2((p-0.5)/0.5, expected);
}
}
avatar
p*2
156
谁给一下那个老题的原题呢?那题我没做过。
avatar
P*c
157
F现在很多时候给的股票跟G的差不多,大家当然都选G. G的股票基本没有风险。F按
照100B的valuation给,风险很大,涨的potential不大,不怎么划算。
以前从G跳到F的人家拿多少股,你得看去年还有多少人跳过去。不如在G待一段时间再去
一个感觉有前途还很小的startup. F的revenue还只能看作G的一个部门吧,
不觉得从career的角度就有多大差别。比如说G的search组也就跟F差不多大吧, career
角度我觉得是差不多的。不拿出点实际的motivation来,就谈career就是bullshit.

【在 k***t 的大作中提到】
: 为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
: 高速发展的平台,而不是一个相对established环境。
: G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
: 尽管F以后如何还不一定,但向上空间同样不可限量。

avatar
p*2
158

再去
upside
G有一个不好就是拿到offer的时候不知道去哪个组。如果被分到一个不喜欢的组也没意
思吧?好像换组也得等18个月吧?那看来现在从待遇来说G已经Top了。要不怎么
Fortune 100 G今年排了第一。不过不知道收购moto之后会有不会有什么变化。moto人
可不少。

【在 P**********c 的大作中提到】
: F现在很多时候给的股票跟G的差不多,大家当然都选G. G的股票基本没有风险。F按
: 照100B的valuation给,风险很大,涨的potential不大,不怎么划算。
: 以前从G跳到F的人家拿多少股,你得看去年还有多少人跳过去。不如在G待一段时间再去
: 一个感觉有前途还很小的startup. F的revenue还只能看作G的一个部门吧,
: 不觉得从career的角度就有多大差别。比如说G的search组也就跟F差不多大吧, career
: 角度我觉得是差不多的。不拿出点实际的motivation来,就谈career就是bullshit.

avatar
r*k
159
moto应该和原来的g分开运营把。招人和发工资都分开。

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****2 的大作中提到】
:
: 再去
: upside
: G有一个不好就是拿到offer的时候不知道去哪个组。如果被分到一个不喜欢的组也没意
: 思吧?好像换组也得等18个月吧?那看来现在从待遇来说G已经Top了。要不怎么
: Fortune 100 G今年排了第一。不过不知道收购moto之后会有不会有什么变化。moto人
: 可不少。

avatar
p*2
160

那简历上能写Google吗?

【在 r*****k 的大作中提到】
: moto应该和原来的g分开运营把。招人和发工资都分开。
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
v*a
161
只是因为大学开始的时候,G就是dream company了

【在 k***t 的大作中提到】
: 为啥选G不选F?按说你这样的编程竞赛大拿该选动态、
: 高速发展的平台,而不是一个相对established环境。
: G跳F的比F跳G的要多吧?如果试因为pkg差别,应该可以谈。
: 尽管F以后如何还不一定,但向上空间同样不可限量。

avatar
r*k
162
google moto啊。
就像现在intel mcafee。

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****2 的大作中提到】
:
: 那简历上能写Google吗?

avatar
p*2
163

大牛再贴几道F的题吧,应该还有其他吧?

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
p*2
164

那也有点用。起码有Google这个keyword了。如果老员工已经离开公司的能不能也用
Google Moto呢?

【在 r*****k 的大作中提到】
: google moto啊。
: 就像现在intel mcafee。
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
r*k
165
北京也要面了 ?

★ 发自iPhone App: ChineseWeb - 中文网站浏览器

【在 p*****2 的大作中提到】
:
: 那也有点用。起码有Google这个keyword了。如果老员工已经离开公司的能不能也用
: Google Moto呢?

avatar
p*2
166

过了一面,现在想是不是拖两个月。因为复习的还不够,很多老题我还没做过。而且也
还没做到600道题。

【在 r*****k 的大作中提到】
: 北京也要面了 ?
:
: ★ 发自iPhone App: ChineseWeb - 中文网站浏览器

avatar
r*k
167
我还没做到60题 好多都不会。。。

【在 p*****2 的大作中提到】
:
: 过了一面,现在想是不是拖两个月。因为复习的还不够,很多老题我还没做过。而且也
: 还没做到600道题。

avatar
y*z
168
这个是概率题。。
先生成 4个bit的 二进制 true代表1,false代表0
这样我们能生成0-15的 等概率的 distribution
然后 [0,15] 当中 选[0,10] -->[0,2](true), [3,9](false)
public class Solution {
/**
* @param args
*/

public void doit(){
int iterate = 10000000;
boolean valve = true;
StringBuilder s = new StringBuilder();
while (valve) {
StringBuilder str = new StringBuilder();
for (int i = 0; i < 4; i++) {
if (Math.random() < 0.5) str.append('1');
else str.append('0');
}
double p = 0.3;
int target = (int) (p * 10);
int value = Integer.parseInt(str.toString(), 2);
if (value <= 9) {
// [0-15]-->[0,9]-->[0,2](1),[3,9](0);
if (value <= 2) {
s.append('1');
} else {
s.append('0');
}
} else
valve = true;
iterate--;
if (iterate < 0)
break;
}
int countone = 0, countzero = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '1')
countone++;
if (s.charAt(i) == '0')
countzero++;
}
int sum = countone + countzero;
System.out.println(((double)countone/(double)sum) + " " + ((double)
countzero/(double)sum));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution s = new Solution();
s.doit();
}
}
avatar
p*2
169

你也面F呀?

【在 r*****k 的大作中提到】
: 我还没做到60题 好多都不会。。。
avatar
r*k
170
要面啊 感觉没准备好
想cancel了

【在 p*****2 的大作中提到】
:
: 你也面F呀?

avatar
p*2
171

怎么cancel呀?跟recruiter说就行了?还是说delay两个月呢?

【在 r*****k 的大作中提到】
: 要面啊 感觉没准备好
: 想cancel了

avatar
r*k
172
delay啊 不知道行不行

【在 p*****2 的大作中提到】
:
: 怎么cancel呀?跟recruiter说就行了?还是说delay两个月呢?

avatar
i*e
173
恭喜!
之前你说你没拿到面试我说怎么可能呢?
好好加油,前途无量!
avatar
k*t
174
怎么说都行吧,感觉上recruiter就是个经纪人,双方的。
他也想做你这单生意,晚一两个月对他的收益没有影响,
除非他绝望到一个月只内再不成交就要走人了才会Push Client:)

【在 p*****2 的大作中提到】
:
: 怎么cancel呀?跟recruiter说就行了?还是说delay两个月呢?

avatar
l*a
175
问题是对某些特定team的特定职位。不见得是一直有opening的
除非你申请那些common positions

【在 k***t 的大作中提到】
: 怎么说都行吧,感觉上recruiter就是个经纪人,双方的。
: 他也想做你这单生意,晚一两个月对他的收益没有影响,
: 除非他绝望到一个月只内再不成交就要走人了才会Push Client:)

avatar
k*t
176
对特定职位的,那当然。
peking2是在面FG的common position吧。
可能要跟recruiter确认一下。从他的角度也有
motivation to encourage the client to prepare the interview。

【在 l*****a 的大作中提到】
: 问题是对某些特定team的特定职位。不见得是一直有opening的
: 除非你申请那些common positions

avatar
p*2
177

我还真是特定的。看来比较麻烦了。fail了两年只能还不能在申请了。

【在 k***t 的大作中提到】
: 对特定职位的,那当然。
: peking2是在面FG的common position吧。
: 可能要跟recruiter确认一下。从他的角度也有
: motivation to encourage the client to prepare the interview。

avatar
A*u
178
cs的吧 经验好丰富
avatar
l*a
179
why 2 years?
new rules for FB?

【在 p*****2 的大作中提到】
:
: 我还真是特定的。看来比较麻烦了。fail了两年只能还不能在申请了。

avatar
p*2
180

听vissa说的。

【在 l*****a 的大作中提到】
: why 2 years?
: new rules for FB?

avatar
k*t
181
那也需要权衡利弊。就算你是特定职位,看F这架势,
因该还有一段时间要大量全面找人。你那特定职位及其
相关职位应该也不止找一个人。
我觉得尽管时间长一点也不一定就好,但总要你自己
comfortable后再去才好,不留遗憾。
不过,至少赶在IPO股价可能的变化之前好一些。
Good Luck。

【在 p*****2 的大作中提到】
:
: 听vissa说的。

avatar
p*2
182

recruiter说我那职位就招,5,6个人,已经收到 几千份简历了。不过也无所谓了吧。
如果万一拿到offer又要大伤人品了。

【在 k***t 的大作中提到】
: 那也需要权衡利弊。就算你是特定职位,看F这架势,
: 因该还有一段时间要大量全面找人。你那特定职位及其
: 相关职位应该也不止找一个人。
: 我觉得尽管时间长一点也不一定就好,但总要你自己
: comfortable后再去才好,不留遗憾。
: 不过,至少赶在IPO股价可能的变化之前好一些。
: Good Luck。

avatar
r*k
183
为啥拿到offer又要大伤人品?

【在 p*****2 的大作中提到】
:
: recruiter说我那职位就招,5,6个人,已经收到 几千份简历了。不过也无所谓了吧。
: 如果万一拿到offer又要大伤人品了。

avatar
p*2
184

刚去了新公司,没几天就离职很伤RP。

【在 r*****k 的大作中提到】
: 为啥拿到offer又要大伤人品?
avatar
r*k
185
哈哈 是哦。
可以先拿offer 推迟报道

【在 p*****2 的大作中提到】
:
: 刚去了新公司,没几天就离职很伤RP。

avatar
j*l
186
厉害!
avatar
d*l
187
楼主终于来到了跟自身水平相符的位置上,祝贺!
avatar
y*o
188
恭喜,沾喜气
avatar
p*2
189

有没有人说说我这个解对不对?我测试了一下,work的还挺好的,没发现什么问题。

【在 p*****2 的大作中提到】
: 恭喜大牛。刚看了一下题目。还没看回复。这道概率题我是这样考虑的
: static boolean Prob2(double p, boolean expected)
: {
: if(p<0.5)
: {
: expected=!expected;
: p=1-p;
: }
:
: if(Prob()==expected)

avatar
r*k
190
太高深了 看不懂。。

【在 p*****2 的大作中提到】
:
: 有没有人说说我这个解对不对?我测试了一下,work的还挺好的,没发现什么问题。

avatar
p*2
191

思路很简单呀。就是先找到概率>=0.5的解。
然后调用Prob, 如果得到需要的解,就结束。如果没有得到需要的解,那么已经浪费
了0.5的概率了。剩下的概率就是P-0.5.
因为得到的解是相反的答案,而且概率是0.5, 所以就要在这个0.5里得到(P-0.5)的概
率。那就是(P-0.5)/0.5。
比如要得到0.6的概率true
如果Prob返回true, 就结束。
如果返回false,那么得到true的概率就剩0.1了。
而得到false的概率是0.5, 在0.5里得到0.1就需要下一次调Fab得到true的概率是0.2.
这样的到true的总概率就是
0.5+0.5*0.2=0.6

【在 r*****k 的大作中提到】
: 太高深了 看不懂。。
avatar
w*b
192
cong
avatar
y*g
193
太牛了

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
z*n
194
不错,
不过题目只要求一个参数,bool Prob2(double p),返回随机值0、1;
但这个解法多带了个参数,而且返回的是确定值,变成按照概率p返回固定值expected
感觉先将p转化为二进制,再进行比较的思路更好理解些

.

【在 p*****2 的大作中提到】
:
: 思路很简单呀。就是先找到概率>=0.5的解。
: 然后调用Prob, 如果得到需要的解,就结束。如果没有得到需要的解,那么已经浪费
: 了0.5的概率了。剩下的概率就是P-0.5.
: 因为得到的解是相反的答案,而且概率是0.5, 所以就要在这个0.5里得到(P-0.5)的概
: 率。那就是(P-0.5)/0.5。
: 比如要得到0.6的概率true
: 如果Prob返回true, 就结束。
: 如果返回false,那么得到true的概率就剩0.1了。
: 而得到false的概率是0.5, 在0.5里得到0.1就需要下一次调Fab得到true的概率是0.2.

avatar
i*e
195
peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。

.

【在 p*****2 的大作中提到】
:
: 思路很简单呀。就是先找到概率>=0.5的解。
: 然后调用Prob, 如果得到需要的解,就结束。如果没有得到需要的解,那么已经浪费
: 了0.5的概率了。剩下的概率就是P-0.5.
: 因为得到的解是相反的答案,而且概率是0.5, 所以就要在这个0.5里得到(P-0.5)的概
: 率。那就是(P-0.5)/0.5。
: 比如要得到0.6的概率true
: 如果Prob返回true, 就结束。
: 如果返回false,那么得到true的概率就剩0.1了。
: 而得到false的概率是0.5, 在0.5里得到0.1就需要下一次调Fab得到true的概率是0.2.

avatar
i*e
196
那参数第一次叫函数时传 expected = true 就行了。加一个wrapper也行。

expected

【在 z*****n 的大作中提到】
: 不错,
: 不过题目只要求一个参数,bool Prob2(double p),返回随机值0、1;
: 但这个解法多带了个参数,而且返回的是确定值,变成按照概率p返回固定值expected
: 感觉先将p转化为二进制,再进行比较的思路更好理解些
:
: .

avatar
c*h
197
gxgx
avatar
H*e
198
我run了下,误差还挺大的
你run了么?

【在 i**********e 的大作中提到】
: peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
: 不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
: 像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。
:
: .

avatar
a*m
199
lol. "然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了"
赞!

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
c*p
200
My 2 cents:
bool prob2(double p)
{
int q;

while ((q =prob()) == (int)(p*=2)) {p -= (int)p;};
return (q < (int)p );
}

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
p*2
201

这是我的测试程序。你测的什么数据?我试了几个P都还行。
import java.util.*;
public class test {
static boolean Prob()
{
Random rand=new Random();
return rand.nextBoolean();
}

static boolean Prob2(double p, boolean expected)
{
if(p<0.5)
{
expected=!expected;
p=1-p;
}

if(Prob()==expected)
return expected;
else
{
return Prob2((p-0.5)/0.5, expected);
}
}

public static void main(String[] args)
{
int count=0;
int times=10000;
double p=0.3;
boolean expected=true;

for(int i=0;i{
if(Prob2(p,expected)==expected)
count++;
}

System.out.println((double)count/times);
}
}

【在 H***e 的大作中提到】
: 我run了下,误差还挺大的
: 你run了么?

avatar
p*2
202

多谢大牛。

【在 i**********e 的大作中提到】
: peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
: 不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
: 像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。
:
: .

avatar
H*e
203
我run误差9%的概览啊
100000 runs

【在 p*****2 的大作中提到】
:
: 多谢大牛。

avatar
p*2
204

我的结果:
1. 0.08948
2. 0.0902
3. 0.08971
4. 0.08925
5. 0.09044
还是很接近呀。

【在 H***e 的大作中提到】
: 我run误差9%的概览啊
: 100000 runs

avatar
H*e
205
when i run it
p = 0.09;
and the result is 0.18274
...why?

【在 p*****2 的大作中提到】
:
: 我的结果:
: 1. 0.08948
: 2. 0.0902
: 3. 0.08971
: 4. 0.08925
: 5. 0.09044
: 还是很接近呀。

avatar
p*2
206

能post你的code吗?

【在 H***e 的大作中提到】
: when i run it
: p = 0.09;
: and the result is 0.18274
: ...why?

avatar
H*e
207
就用的你的exact code啊。。。

【在 p*****2 的大作中提到】
:
: 能post你的code吗?

avatar
p*2
208

copy/paste的?

【在 H***e 的大作中提到】
: 就用的你的exact code啊。。。
avatar
H*e
209
yes.. :(

【在 p*****2 的大作中提到】
:
: copy/paste的?

avatar
p*2
210

你试过了你那里random的结果是均匀的吗?

【在 H***e 的大作中提到】
: yes.. :(
avatar
l*i
211
double在计算机里是 基数 乘 指数
0.00344 = 0.344 * E-3
Update: 我记错了,指数也是基于2的,所以也是work的。

【在 r*****k 的大作中提到】
: 假设double p 二进制表示是:100011
: call prob 6次
: 如果结果小于100011 返回p
: 大于返回 1-p
: 等于再call prob 6次
: zz from Google

avatar
q*x
212
根本没看懂。

【在 i**********e 的大作中提到】
: peking2 你不愧是北京大爷,思路真的好赞,竟然没人顶,我帮顶一下。
: 不过你思路看似简单,但其实真不容易想到,尤其你没往这方面想的话。
: 像我的话,就只想到 rejection sampling 的思路,解这题要复杂些。
:
: .

avatar
d*p
213
我也是这么想的,迭代一下就ok

【在 p*****2 的大作中提到】
:
: 你试过了你那里random的结果是均匀的吗?

avatar
l*i
214
bool Rand2(){ return true or false equally.};
// p is between 0 and 1
// return false for probability of p
bool PCal(double p)
{
p *= 2;
bool b = Rand2();
while(p != 0 && p! = 1)
{
b = Rand2();
if (!b && p > 1)
return false;
else (b && p < 1)
return true;
else
p = p *2;
}
return b;
}
avatar
h*e
215
楼上忘记每次如果p大于1 要把p减1.。。
avatar
g*i
216
恭喜,楼主很强啊,遇到的题都不容易
avatar
p*n
217
prob的那题:
借助于prob,可以如此进行算法:
设第k次调用prob前,目标区间是[a,b];k=1,2,…。k=1时a=0,b=1。对于这一次调用,
假想prob的工作方式是:随机一个[a,b]上的均匀分布数,如果这个数小于等于(a+b)/2
,则返回true;否则返回false。设x=a+p*(b-a),prob2的工作方式可假想为:随机一
个[a,b]上的均匀分布数,如果这个数小于等于x,则返回true;否则返回false。于是
可按两种情况处理:
(1) x <= (a+b)/2
如果调用prob返回true,表明prob产生的随机数在[a,(a+b)/2]之间,但无法确定这个
随机数是否在[a,x]之间;此时令a’=a, b’=(a+b)/2,继续在[a’,b’]上重复上面的
过程(第k+1次)。
如果调用prob返回false,表明prob产生的随机数在((a+b)/2,b]之间,必不可能在[a,x
]之间,此时prob2可以返回false。
(2) x > (a+b)/2
如果调用prob返回true,表明prob产生的随机数在[a,(a+b)/2]之间,此时这个随机数
肯定在[a,x]之间,prob2返回true。
如果调用prob返回false,表明prob产生的随机数在((a+b)/2,b]之间,但无法确定这个
随机数是否在[a,x]之间;此时令a’=(a+b)/2,b’=b,继续在[a’,b’]上重复上面的
过程(第k+1次)。
算法很快,是指数收敛的。

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
g*i
218
对,还要避免运气不好的无限循环,循环限制在double的bit位数次就可以了.

【在 h********e 的大作中提到】
: 楼上忘记每次如果p大于1 要把p减1.。。
avatar
D*g
219
prob那题,我的code:
static boolean prob() {
Random r = new Random();
if (r.nextDouble() < 0.5) {
return true;
}

return false;
}
static boolean prob(double p) {
double EPS = 1e-8;
if (p >= 1.0) {
return true;
}
if (p <= 0.0) {
return false;
}

int bitPos = 0;
while (p > EPS) {
bitPos ++;
p = p * 2;
if (p >= 1.0) {
// We need to return true with prob 2^(-bitPos),
this can be achieved by calling prob() with bitPos times and return true if
all true
// All false is the prerequesite state for checking
next 1's.
boolean allTrue = true, allFalse = true;
for (int i = 0; i < bitPos; ++i) {
boolean flip = prob();
allTrue = allTrue && flip;
allFalse = allFalse && !flip;
EPS = EPS * 2;
}

if (allTrue) {
return true;
}
if (!allFalse) {
return false;
}
// reset
bitPos = 0;
p = p - 1.0;
}
}

return false;
}

static void testProb() {
int c = 1000000;
double p = 0.75;
int trueCount = 0;
for (int i = 0; i < c; ++i) {
if (prob(p)) {
trueCount++;
}
}

System.out.println("p--" + p + ", tc%--" + (double)trueCount/c);
p=0.125;
trueCount = 0;
for (int i = 0; i < c; ++i) {
if (prob(p)) {
trueCount++;
}
}

System.out.println("p--" + p + ", tc%--" + (double)trueCount/c);

p=0.33;
trueCount = 0;
for (int i = 0; i < c; ++i) {
if (prob(p)) {
trueCount++;
}
}

System.out.println("p--" + p + ", tc%--" + (double)trueCount/c);
}

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
c*e
220
边听边在心里说:我艹烙印. 哈哈!
avatar
s*k
221
cong
avatar
a*2
222
能不能详细贴一下那个直方题是什么题目

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
p*2
223

关于我那个解结果不对的问题。我是在Macbook上测试的,结果很接近。昨天跟人讨论
,别人是在Windows上测试的。我今天在Linux上测试了一下,确实得到了不正确的结果
。研究了一下发现,Linux上连续的同一个结果的情况比较严重。这里是我run 100次
rand.nextBoolean的结果在Macbook上,等下贴一下linux上的结果。
false
false
false
true
false
false
true
false
true
true
true
true
true
false
true
true
false
false
false
false
true
false
true
false
false
true
true
true
false
false
false
true
true
false
false
false
true
true
false
false
false
false
true
true
false
true
false
false
true
false
true
false
true
true
true
false
false
true
true
false
true
true
true
false
false
false
false
true
true
false
true
false
false
true
true
false
true
false
false
true
true
true
false
false
false
false
true
true
true
false
true
false
true
true
false
false
true
false
true
true

【在 a****2 的大作中提到】
: 能不能详细贴一下那个直方题是什么题目
avatar
p*2
224
Linux上的结果
true
true
false
true
false
false
true
false
true
false
false
false
false
true
true
true
false
true
true
true
true
false
false
true
false
true
false
false
true
false
false
false
false
true
false
true
false
false
true
false
false
false
true
true
false
true
true
false
false
true
true
true
true
false
false
true
false
true
false
false
false
false
true
false
true
false
false
true
true
true
true
true
true
true
true
true
true
false
false
true
false
true
true
false
true
false
true
true
true
true
false
true
false
true
false
false
false
false
true
true
avatar
p*2
225
Linux上会出现连续10个true,在Mac上最多连续出现的次数是4次。应该是这个影响了
结果。
avatar
p*2
226
又做了一个测试,当产生100000个随机boolean的时候
Mac上连续结果的最大次数是10-20这个区间,而Linux上是160-170这个区间。看样子
Mac的随机性要比Linux更高。所以Mac上运行起来很接近结果。
avatar
o*y
227
random 函数应该是伪随机,有确定的算法,不是真正的随机。
你new 一个Random 的时候,如果带的seed参数一样,
每次的结果应该都是一样的,我觉得应该是平台无关。
如果new 一个Random不带参数,自动用当前的时间做seed.
public Random() { this(System.currentTimeMillis()); }
所以你取得什么结果,取决于你的seed.如果不带seed,
取决于你运行的时间。

【在 p*****2 的大作中提到】
: 又做了一个测试,当产生100000个随机boolean的时候
: Mac上连续结果的最大次数是10-20这个区间,而Linux上是160-170这个区间。看样子
: Mac的随机性要比Linux更高。所以Mac上运行起来很接近结果。

avatar
p*2
228

random是Java自己实现的?不是调的OS的random?

【在 o******y 的大作中提到】
: random 函数应该是伪随机,有确定的算法,不是真正的随机。
: 你new 一个Random 的时候,如果带的seed参数一样,
: 每次的结果应该都是一样的,我觉得应该是平台无关。
: 如果new 一个Random不带参数,自动用当前的时间做seed.
: public Random() { this(System.currentTimeMillis()); }
: 所以你取得什么结果,取决于你的seed.如果不带seed,
: 取决于你运行的时间。

avatar
f*t
229
概率那题,coding不是重点,关键在于算法。想了一下有这么个思路,时间紧没有仔细
斟酌,所以不一定对,供参考而已。
Prob()产生True和False的概率都是0.5,就等价于黑箱里一红一黑两个球,让你随机哪
一个,那拿到红色的和黑色球的概率都是一半,这个很容易理解。
假如现在让你连续拿两次(当然是每次拿完之后都放回黑箱去),都能拿到红球的概率
是0.5 x 0.5 = 0.25;所以对于Prob2(double p),假如p=0.25,那你知道怎么去做了。
问题是p可以任意取,比如说现在我让p=0.75那怎么办?考虑这么一个概率题,假如下
面这件事情最后能称为“成功”的概率是多少:最多让你试两回,第一回只让你取一个
球,假如取到红色的,就马上成功了不用做下去;假如不是红色的,再给你一次机会再
拿一次,假如这回也能拿到红色的,也算你成功了。这个事情成功的概率有多大呢?答
案不难:0.5 + 0.5 x 0.5 = 0.75,请注意这里的条件概率和概率相加时对于互斥事件
的处理。
再来一个复杂一点的,p=0.765625怎么办?请考虑下面这个事件成功的概率:最多让你
试三回,第一回是红色的马上成功了;第一回不成功的话给你第二次机会,再取到红色
的也算你成功;万一很不幸运第二回还不成功那就给你最后一次机会,再拿一次球,假
如是红色的话最后也算是成功的。成功概率是这样的:0.5 + 0.5 x 0.5 + 0.5 x 0.5
x 0.5 = 0.765625。
最后我们要知道这么一个数学知识:对于任何一个大于0小于1的小数,它都可以表达成
某些0.5的幂次项的和。所以假如你能想办法把p表达成某些0.5的幂次项的和,这道题
你就知道怎样做了。
avatar
D*g
230
直方图那题,我的code:
static int histogramHoldRainWater(final int[] hist) {
if (hist == null || hist.length == 0) {
throw new IllegalArgumentException();
}

if (hist.length <= 2) {
return 0;
}
int sum = 0;
int histLeft = 0;
int histRight = 0;
while (histLeft < hist.length) {
while (histLeft + 1 < hist.length && hist[histLeft] <= hist[
histLeft+1]) {
histLeft ++;
}

if (histLeft >= hist.length - 2) {
break;
}

histRight = histLeft + 1;
while (histRight + 1 < hist.length && hist[histRight] >= hist[
histRight + 1]) {
histRight ++;
}

if (histRight == hist.length - 1) {
break;
}

while (histRight + 1 < hist.length && hist[histRight] <= hist[
histRight + 1]) {
histRight ++;
}

int hight = Math.min(hist[histLeft], hist[histRight]);
for (int i = histLeft + 1; i < histRight; ++i) {
sum += hight - hist[i];
}

histLeft = histRight;
}
return sum;
}

static void testHistogramHoldRainWater() {
int[] a = new int[] {3,1,5};
System.out.println("Water for " + Arrays.toString(a) + " is " +
histogramHoldRainWater(a));

a = new int[] {3,1,0,5};
System.out.println("Water for " + Arrays.toString(a) + " is " +
histogramHoldRainWater(a));
}

【在 v***a 的大作中提到】
: 积攒RP,回报版面,签了G家,所以他家信息基本不透露了,直接上题目:
: FB的新题:
: X)Initial Onsite,
: 题目:Facebook HackerCup Round 1 的 Squished Status,比这个还简单些
: 告诉他做过了,DP就行,他就说那些解法是O(N) Space的,O(1)空间怎么解,
: 于是把公式写出来,顺便程序也写出来,
: 然后很霸气的告诉他,这种简单的题目没想过O(N)的,他镇精了
: 随后Open题,一个分布式系统,每次要把一个新的 OS binary file 有 100MB,
: deploy 到所有机器里,大概百万台,
: 怎么设计一个系统。

avatar
p*2
231
这是我的直方图代码
public class test2 {
static int water(int[] arr)
{
int i=0;
int j=arr.length-1;
int count=0;

while(i{
while(ii++;

while(j>i && arr[j]j--;

if(i==j)
break;

int start;
int low;
boolean direct=true;
if(arr[i]<=arr[j])
{
start=i+1;
low=arr[i];
direct=true;
}
else
{
start=j-1;
low=arr[j];
direct=false;
}

while(arr[start]{
count+=low-arr[start];

if(direct)
start++;
else
start--;
}

if(direct)
i=start;
else
j=start;
}

return count;

}
public static void main(String[] args)
{
int[][] q=new int[][] {{3,1,5},
{3,1,0,5},
{1,2,3},
{3,2,1},
{1,2,3,2,1},
{5,4,3,6,2,3}};
int[] a=new int[] {2,5,0,0,0,4};

for(int i=0;i{
int r=water(q[i]);
if(a[i]==r)
System.out.print("[Pass]");
else
System.out.print("[Fail]");

System.out.println("expected:"+a[i]+" actual:"+r);
}
}
}
avatar
H*e
232
高度会改变的啊。

【在 p*****2 的大作中提到】
: 这是我的直方图代码
: public class test2 {
: static int water(int[] arr)
: {
: int i=0;
: int j=arr.length-1;
: int count=0;
:
: while(i: {

avatar
p*2
233

我还没考虑这个扩展。高度会改变是什么意思呀。能讲讲吗?

【在 H***e 的大作中提到】
: 高度会改变的啊。
avatar
p*2
234

高度可以任意改变,还是有一定限制和规律呢?

【在 H***e 的大作中提到】
: 高度会改变的啊。
avatar
H*e
235
我也不知道
万一变成最高的,貌似就要重算了
不知道有什么trick没有

【在 p*****2 的大作中提到】
:
: 高度可以任意改变,还是有一定限制和规律呢?

avatar
p*2
236

如果变化没有规律,变得乱七八糟的肯定得重算呀。所以,题目的要求还不清除。

【在 H***e 的大作中提到】
: 我也不知道
: 万一变成最高的,貌似就要重算了
: 不知道有什么trick没有

avatar
H*e
237
我assume是只变化一根
还有你知道第一题那个什么cup题是啥啊? 能不能给个timu

【在 p*****2 的大作中提到】
:
: 如果变化没有规律,变得乱七八糟的肯定得重算呀。所以,题目的要求还不清除。

avatar
p*2
238

我找一下。

【在 H***e 的大作中提到】
: 我assume是只变化一根
: 还有你知道第一题那个什么cup题是啥啊? 能不能给个timu

avatar
p*2
239

Some engineers got tired of dealing with all the different ways of encoding
status messages, so they decided to invent their own. In their new scheme,
an encoded status message consists of a sequence of integers representing
the characters in the message, separated by spaces. Each integer is between
1 and M, inclusive. The integers do not have leading zeroes. Unfortunately
they decided to compress the encoded status messages by removing all the
spaces!
Your task is to figure out how many different encoded status messages a
given compressed status message could have originally been. Because this
number can be very large, you should return the answer modulo 4207849484 (
0xfaceb00c in hex).
For example, if the compressed status message is "12" it might have
originally been "1 2", or it might have originally been "12". The compressed
status messages are between 1 and 1000 characters long, inclusive. Due to
database corruption, a compressed status may contain sequences of digits
that could not result from removing the spaces in an encoded status message.
Input
The input begins with a single integer, N, the number of compressed status
messages you must analyze. This will be followed by N compressed status
messages, each consisting of an integer M, the highest character code for
that database, then the compressed status message, which will be a string of
digits each in the range '0' to '9', inclusive. All tokens in the input
will be separated by some whitespace.
Output
For each of the test cases numbered in order from 1 to N, output "Case #i: "
followed by a single integer containing the number of different encoded
status messages that could be represented by the corresponding compressed
sequence modulo 4207849484. If none are possible, output a 0.
Constraints
5 <= N <= 25
2 <= M <= 255
1 <= length of encoded status <= 1000
Example inputExample output
5
12
12
255
219
30
1234321
2
101
70 8675309
Case #1: 2
Case #2: 4
Case #3: 6
Case #4: 0
Case #5: 2

【在 H***e 的大作中提到】
: 我assume是只变化一根
: 还有你知道第一题那个什么cup题是啥啊? 能不能给个timu

avatar
f*e
240
赞最后一句。前阵有人在说用linkedin数据来做一个app,就是把从这些hot company
跳去startup的人统计一下人数,看哪些startup占据最多,那就是你该看的公司了。
这些数据现在在linkedin上不显示,因为网站上显示的是绝对数字最多的公司,那样
大公司自然会被列出来,而不是startup。谁有功夫把这个app做出来造福大家吧。

【在 P*****f 的大作中提到】
: 谁给钱多去谁。
: G跳Twitter/Zynga的更多,Facebook也算比较大公司了,IPO搞头不大。要去动态的,
: 观察下从这些公司跳出来的去哪就可以了

avatar
y*g
241
特别早期的startup fresh也不太容易进,而且h1b 绿卡政策很可能一般

【在 f**e 的大作中提到】
: 赞最后一句。前阵有人在说用linkedin数据来做一个app,就是把从这些hot company
: 跳去startup的人统计一下人数,看哪些startup占据最多,那就是你该看的公司了。
: 这些数据现在在linkedin上不显示,因为网站上显示的是绝对数字最多的公司,那样
: 大公司自然会被列出来,而不是startup。谁有功夫把这个app做出来造福大家吧。

avatar
l*i
242
bool Rand2(){ return true or false equally.};
// p is between 0 and 1
// return false for probability of p
bool PCal(double p)
{
p *= 2;
bool b = Rand2();
while(p != 0 && p! = 1)
{
b = Rand2();
if (!b && p > 1)
return false;
else (b && p < 1)
return true;
else if ( p > 1)
p = (p-1) *2;
else
p * =2;
}
return b;
}
avatar
p*2
243
刚才想了想那个变化长度的。感觉可以转换为interval的问题,但是写起code来挺麻烦
的。
avatar
i*e
244
我刚在linux上运行了,没有这方面的问题,不过我的程序是C++ 不是Java。
我测试了你的算法,返回结果都算满意,而且运行越多次,返回的结果越接近理想的 p
值。
你的算法不单简洁,而且复杂度是最优的,递归是 average 两次就返回答案。
expected # calls = 1*0.5 + 2*0.5^2 + 3*0.5^3 + ...
= Summation( k * 0.5^k ), k = 1 .. n
= 2 - (n+2)/2^n
When n = infinity,
expected # calls = 2
贴下code方便大家做测试:
#include
#include
#include
#include
using namespace std;
bool rand2() {
return (rand() % 2 == 0);
}
unsigned long long totalCalls = 0;
bool Prob2(double p, bool expected = true) {
totalCalls++;
if (p < 0.5) {
expected = !expected;
p = 1-p;
}
if (rand2()) {
return expected;
} else {
return Prob2((p-0.5)/0.5, expected);
}
}
int main() {
srand(time(NULL));
unsigned long long n = 100000000;
unsigned long long total = 0;
double p = 0.903013;
unsigned long long calls = 0;
for (unsigned long long i = 0; i < n; i++) {
totalCalls = 0;
if (Prob2(p)) {
total++;
}
calls += totalCalls;
}
double statisticP = ((double)total / n);
cout << "Theoretical p = " << p << endl;
cout << "Prob2 statistical p = " << statisticP << endl;
cout << "Difference from theoretical p: " << (fabs(statisticP - p) / p *
100.0) << "%" << endl;
cout << "Average # calls = " << ((double)calls / n) << endl;
}

【在 p*****2 的大作中提到】
: Linux上会出现连续10个true,在Mac上最多连续出现的次数是4次。应该是这个影响了
: 结果。

avatar
p*2
245
多谢大牛confirm。

p

【在 i**********e 的大作中提到】
: 我刚在linux上运行了,没有这方面的问题,不过我的程序是C++ 不是Java。
: 我测试了你的算法,返回结果都算满意,而且运行越多次,返回的结果越接近理想的 p
: 值。
: 你的算法不单简洁,而且复杂度是最优的,递归是 average 两次就返回答案。
: expected # calls = 1*0.5 + 2*0.5^2 + 3*0.5^3 + ...
: = Summation( k * 0.5^k ), k = 1 .. n
: = 2 - (n+2)/2^n
: When n = infinity,
: expected # calls = 2
: 贴下code方便大家做测试:

avatar
t*i
246
大牛啊!!!!
恭喜恭喜!
avatar
p*2
247
多谢大牛更新。
直方图那个我觉得可以用interval来解。
avatar
R*t
248
恭喜恭喜
沾喜气 嘻嘻
avatar
l*0
249
感觉你这个FB的PhD package偏低啊~
avatar
H*1
250
多谢分享!
F的4800K RSU相当于多少啊?
G的phd standard 是 127K base么?

【在 v***a 的大作中提到】
: Update:
: 不少人发信问package和题目解答,update一下吧:
: 第一题详细在 http://www.mitbbs.com/article/JobHunting/32055617_0.html
: 感谢 peking2 同学贴上来
: 第二题我当时的算法和 pigsolomon 朋友的差不多:
: http://www.mitbbs.com/article/JobHunting/32055195_0.html
: 是其中一种正确的算法,肯定有更好的,期待大牛
: 第三题的扩展
: 每次只有一根柱子变化,减少或者增加k单位
: 我没有做出来,只是提了一下RMQ或许可以用在里面,面试官没有肯定

avatar
g*y
251
怎么可能4800k
是4800 shares吧 哈哈

【在 H*****1 的大作中提到】
: 多谢分享!
: F的4800K RSU相当于多少啊?
: G的phd standard 是 127K base么?

avatar
S*e
252
感谢楼主分享面经!

【在 v***a 的大作中提到】
: Update:
: 不少人发信问package和题目解答,update一下吧:
: 第一题详细在 http://www.mitbbs.com/article/JobHunting/32055617_0.html
: 感谢 peking2 同学贴上来
: 第二题我当时的算法和 pigsolomon 朋友的差不多:
: http://www.mitbbs.com/article/JobHunting/32055195_0.html
: 是其中一种正确的算法,肯定有更好的,期待大牛
: 第三题的扩展
: 每次只有一根柱子变化,减少或者增加k单位
: 我没有做出来,只是提了一下RMQ或许可以用在里面,面试官没有肯定

avatar
y*g
253
很不错吧? 不过我也不知道fb给phD是多少
说偏低偏高的说一个标准的?

【在 l*******0 的大作中提到】
: 感觉你这个FB的PhD package偏低啊~
avatar
c*e
254
1 #include
2 #include
3 #include
4
5 int prob()
6 {
7 return rand() % 2;
8 }
9
10 int prob(double req_, double has_)
11 {
12 int a = prob();
13
14 if (req_ == has_)
15 return a;
16 else if (req_ > has_)
17 {
18 if (a == 1)
19 return a;
20 else
21 return prob(req_ - has_, has_ / 2);
22 }
23 else
24 {
25 if (a == 0)
26 return a;
27 else
28 return prob(req_, has_ / 2);
29 }
30 }
31
32 int main()
33 {
34 srand(time(NULL));
35
36 int k = 0, runs = 100000;
37 ..
38 for (int i = 0; i < runs; ++i)
39 k += prob(0.3, 0.5);
40
41 std::cout << k * 1.0 / runs << "\n";
42 }

【在 b***u 的大作中提到】
: prob()怎么搞?
: 我能想到是你能构造1/2^k。以及或事件造p1+p2-p1p2。怎么逼近p呢?

avatar
f*t
255
太牛了,忍不住回帖祝贺!
avatar
h*g
256
这个想法能不能展开讲讲?
thanks~

【在 p*****2 的大作中提到】
: 刚才想了想那个变化长度的。感觉可以转换为interval的问题,但是写起code来挺麻烦
: 的。

avatar
p*2
257

就是把能盛水的各个部分做成各个interval来存储。一旦有高度的变化,就根据相应的
情况调整intervals。比如merge,create new interval, delete interval etc. 各种
情况都要考虑,code会比较麻烦。

【在 h*****g 的大作中提到】
: 这个想法能不能展开讲讲?
: thanks~

avatar
s*n
258


【在 p*****2 的大作中提到】
:
: 就是把能盛水的各个部分做成各个interval来存储。一旦有高度的变化,就根据相应的
: 情况调整intervals。比如merge,create new interval, delete interval etc. 各种
: 情况都要考虑,code会比较麻烦。

avatar
s*n
259
peking2那个翻转"expected"太深奥了,这样行不行?
static boolean Prob(double p)
{
while(p) {
int bit = p>0.5?1:0;
int r = rand2();
if (relse if (r>bit) return false;
p=p*2;
if (bit) p=p-1;
}
return false;
}
avatar
P*c
260
赞。good choice. If G's base is 127k, considering return and risk it is
still the better choice.

【在 v***a 的大作中提到】
: Update:
: 不少人发信问package和题目解答,update一下吧:
: 第一题详细在 http://www.mitbbs.com/article/JobHunting/32055617_0.html
: 感谢 peking2 同学贴上来
: 第二题我当时的算法和 pigsolomon 朋友的差不多:
: http://www.mitbbs.com/article/JobHunting/32055195_0.html
: 是其中一种正确的算法,肯定有更好的,期待大牛
: 第三题的扩展
: 每次只有一根柱子变化,减少或者增加k单位
: 我没有做出来,只是提了一下RMQ或许可以用在里面,面试官没有肯定

avatar
g*n
261
Cong!

Update:不少人发信问package和题目解答,update一下吧:第一题详细在 http://www.mitbbs.com/article/JobHun........
★ Sent from iPhone App: iReader Mitbbs Lite 7.39

【在 v***a 的大作中提到】
: 只是因为大学开始的时候,G就是dream company了
avatar
u*l
262
hehe, 4800k RSU , that is a lot.

【在 v***a 的大作中提到】
: Update:
: 不少人发信问package和题目解答,update一下吧:
: 第一题详细在 http://www.mitbbs.com/article/JobHunting/32055617_0.html
: 感谢 peking2 同学贴上来
: 第二题我当时的算法和 pigsolomon 朋友的差不多:
: http://www.mitbbs.com/article/JobHunting/32055195_0.html
: 是其中一种正确的算法,肯定有更好的,期待大牛
: 第三题的扩展
: 每次只有一根柱子变化,减少或者增加k单位
: 我没有做出来,只是提了一下RMQ或许可以用在里面,面试官没有肯定

avatar
h*7
263
本科拿这么好的package起点真是不错,年轻有为啊。:) Cong lz,聪明能干。
avatar
H*r
264
直方题怎么扫瞄一次得到结果? 怎么感觉得上stack?

【在 v***a 的大作中提到】
: Update:
: 不少人发信问package和题目解答,update一下吧:
: 第一题详细在 http://www.mitbbs.com/article/JobHunting/32055617_0.html
: 感谢 peking2 同学贴上来
: 第二题我当时的算法和 pigsolomon 朋友的差不多:
: http://www.mitbbs.com/article/JobHunting/32055195_0.html
: 是其中一种正确的算法,肯定有更好的,期待大牛
: 第三题的扩展
: 每次只有一根柱子变化,减少或者增加k单位
: 我没有做出来,只是提了一下RMQ或许可以用在里面,面试官没有肯定

avatar
b*t
265
两个指针一左一右往中间走
类似 sorted array之2sum problem

【在 H****r 的大作中提到】
: 直方题怎么扫瞄一次得到结果? 怎么感觉得上stack?
avatar
H*r
266
cool!
这个问题要改成两维直方阵求水容积会更有趣?

【在 b******t 的大作中提到】
: 两个指针一左一右往中间走
: 类似 sorted array之2sum problem

avatar
w*y
267
直方图那个题, 我没有见过原题啊
题目到底是什么样的?//汗
E.G:
3,1,5 => 2
3,1,0,5 => 5
没看懂什么意思
avatar
y*g
268
4800k RSU ????
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。