• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACTime

            let's start
            隨筆 - 10, 文章 - 22, 評論 - 2, 引用 - 0
            數據加載中……

            2010年3月22日

            [轉]frkstyc的poj分類

            1474 geometry 1000 ad hoc 1003 ad hoc 1004 ad hoc 1005 ad hoc 1008 ad hoc 1023 ad hoc 1045 ad hoc 1046 ad hoc 1047 ad hoc 1079 ad hoc 1102 ad hoc 1126 ad hoc 1140 ad hoc 1207 ad hoc 1218 ad hoc 1220 ad hoc 1289 ad hoc 1306 ad hoc 1316 ad hoc 1326 ad hoc 1423 ad hoc 1450 ad hoc 1477 ad hoc 1488 ad hoc 1491 ad hoc 1493 ad hoc 1517 ad hoc 1519 ad hoc 1528 ad hoc 1552 ad hoc 1565 ad hoc 1583 ad hoc 1628 ad hoc 1635 ad hoc 1657 ad hoc 1658 ad hoc 1663 ad hoc 1665 ad hoc 1759 ad hoc 1775 ad hoc 1781 ad hoc 1809 ad hoc 1859 ad hoc 1868 ad hoc 1936 ad hoc 1942 ad hoc 1969 ad hoc 2000 ad hoc 2006 ad hoc 2013 ad hoc 2015 ad hoc 2017 ad hoc 2027 ad hoc 2083 ad hoc 2105 ad hoc 2109 ad hoc 2126 ad hoc 2136 ad hoc 2140 ad hoc 2141 ad hoc 2144 ad hoc 2159 ad hoc 2190 ad hoc 2196 ad hoc 2231 ad hoc 2249 ad hoc 2262 ad hoc 2272 ad hoc 2301 ad hoc 2305 ad hoc 2309 ad hoc 2316 ad hoc 2321 ad hoc 2328 ad hoc 2330 ad hoc 2350 ad hoc 2351 ad hoc 2379 ad hoc 2380 ad hoc 2390 ad hoc 2403 ad hoc 2419 ad hoc 1131 algebra 1707 algebra 1125 all pairs shortest paths 1375 analytical geometry 1473 analytical geometry 2098 analytical geometry 2242 analytical geometry 1001 arbitrary precision calculation 1354 arbitrary precision calculation 1454 arbitrary precision calculation 1503 arbitrary precision calculation 2389 arbitrary precision calculation 2413 arbitrary precision calculation 2240 Bellman-Ford algorithm 1195 binary indexed tree 1330 binary search 2418 binary search tree 1466 bipartite graph matching 1087 bipartite graph matching or maximum flow 2018 bisection and dynamic programming 1505 bisection and greedy 1434 bisection method 2155 bit operation or binary indexed tree 1111 breadth first search 1562 breadth first search 1724 breadth first search 1753 breadth first search 1915 breadth first search 1924 breadth first search 2225 breadth first search 2243 breadth first search 2251 breadth first search 2312 breadth first search 2386 breadth first search 2415 breadth first search 2426 breadth first search 2435 breadth first search 1209 calendar 2080 calendar 2210 calendar 1031 computational geometry 1127 computational geometry 1648 computational geometry 1654 computational geometry 1675 computational geometry 1912 computational geometry 2099 computational geometry 2150 computational geometry 2318 computational geometry 2398 computational geometry 2423 computational geometry 1032 construction 1147 construction 1148 construction 1702 construction 1844 construction 1898 construction 1906 construction 2085 construction 2319 construction 2356 construction 2402 construction 1426 construction or breadth first search 1606 construction or breadth first search 1113 convex hull 2187 convex hull and enumeration 1010 depth first search 1011 depth first search 1022 depth first search 1054 depth first search 1118 depth first search 1144 depth first search 1190 depth first search 1564 depth first search 1655 depth first search 1904 depth first search 1980 depth first search 2184 depth first search 2186 depth first search 2362 depth first search 2378 depth first search 2438 depth first search 1151 discretization and union of intervals or segment tree 1182 disjoint sets 1291 disjoint sets 1703 disjoint sets 1984 disjoint sets 2021 disjoint sets 2236 disjoint sets 2371 divide and conquer 2388 divide and conquer 1014 dynamic programming 1015 dynamic programming 1018 dynamic programming 1036 dynamic programming 1038 dynamic programming 1050 dynamic programming 1088 dynamic programming 1093 dynamic programming 1156 dynamic programming 1157 dynamic programming 1159 dynamic programming 1160 dynamic programming 1163 dynamic programming 1170 dynamic programming 1191 dynamic programming 1221 dynamic programming 1338 dynamic programming 1458 dynamic programming 1579 dynamic programming 1631 dynamic programming 1651 dynamic programming 1661 dynamic programming 1664 dynamic programming 1678 dynamic programming 1685 dynamic programming 1722 dynamic programming 1732 dynamic programming 1745 dynamic programming 1821 dynamic programming 1909 dynamic programming 1923 dynamic programming 1925 dynamic programming 1953 dynamic programming 2033 dynamic programming 2133 dynamic programming 2151 dynamic programming 2181 dynamic programming 2229 dynamic programming 2247 dynamic programming 2250 dynamic programming 2342 dynamic programming 2353 dynamic programming 2355 dynamic programming 2385 dynamic programming 2393 dynamic programming 2397 dynamic programming 2414 dynamic programming 2430 dynamic programming 2439 dynamic programming 2441 dynamic programming 2442 dynamic programming 2084 dynamic programming and arbitrary precision calculation 1387 dynamic programming and enumeration 1322 dynamic programming or generating function 1012 enumeration 1013 enumeration 1142 enumeration 1171 enumeration 1183 enumeration 1318 enumeration 1411 enumeration 1543 enumeration 1647 enumeration 1650 enumeration 1828 enumeration 1916 enumeration 1930 enumeration 2078 enumeration 2100 enumeration 2191 enumeration 2245 enumeration 2326 enumeration 2346 enumeration 2363 enumeration 2381 enumeration 2436 enumeration 2444 enumeration 1267 enumeration and bisection 1129 enumeration and depth first search 1186 enumeration and hash table 1348 enumration 1472 expression evaluation 2106 expression evaluation 2246 expression evaluation 2269 expression evaluation 2234 game theory 2348 game theory 2425 game theory 1799 geometry 1927 geometry 1939 geometry 1940 geometry 2007 geometry 2208 geometry 2276 geometry 2365 geometry 2405 geometry 1981 geometry and enumeration 1090 Gray code 1832 Gray code 1017 greedy 1042 greedy 1083 greedy 1230 greedy 1328 greedy 1456 greedy 1862 greedy 1922 greedy 2054 greedy 2082 greedy 2209 greedy 2291 greedy 2313 greedy 2325 greedy 2370 greedy 2376 greedy 2431 greedy 2433 greedy 2437 greedy 1405 greedy and arbitrary precision calculation 1659 greedy and construction 1026 group theory 1033 group theory 1286 group theory 1674 group theory 2369 group theory 2409 group theory 2366 hash table or binary search 1521 Huffman tree 1742 knapsack 2392 knapsack 1538 Lagrangian interpolation 2344 linear algebra and greedy 1462 linear systems 1914 linear systems 2440 matrix algebra 1149 maximum flow 1273 maximum flow 1459 maximum flow 2125 maximum flow and minimum cut 2377 maximum spanning tree 1258 minimum spanning tree 1679 minimum spanning tree 1861 minimum spanning tree 2421 minimum spanning tree 1166 modular systems 1222 modular systems 1681 modular systems 2345 modular systems 1905 Newton's iteration 2420 Newton's iteration 2299 number of inversions 1006 number theory 1061 number theory 1067 number theory 1152 number theory 1284 number theory 1320 number theory 1401 number theory 1455 number theory 1597 number theory 1808 number theory 1811 number theory 1845 number theory 1995 number theory 2115 number theory 2407 number theory 2417 number theory 2429 number theory and enumeration 1146 permutation 1256 permutation 1731 permutation 1833 permutation 2079 rotating calipers 2104 search 1177 segment tree 2182 segment tree 2352 segment tree or binary indexed tree 1016 simulation 1028 simulation 1048 simulation 1049 simulation 1051 simulation 1060 simulation 1281 simulation 1298 simulation 1363 simulation 1504 simulation 1573 simulation 1578 simulation 1589 simulation 1592 simulation 1600 simulation 1656 simulation 1660 simulation 1666 simulation 1684 simulation 1926 simulation 1928 simulation 1978 simulation 2014 simulation 2039 simulation 2050 simulation 2051 simulation 2081 simulation 2271 simulation 2317 simulation 2339 simulation 2340 simulation 2359 simulation 2383 simulation 2410 simulation 2424 simulation 2443 simulation 2387 single source shortest paths 2394 single source shortest paths 1002 sorting 1245 sorting 1520 sorting 2092 sorting 2408 sorting 1007 stable sorting 1572 string manipulation 1646 string manipulation 1917 string manipulation 2406 string matching 1128 topological sorting 1785 treap 2201 treap 2255 tree manipulation 1089 union of intervals 1797 variation of Dijkstra's shortest path algorithm 2253 variation of Dijkstra's shortest path algorithm 2395 variation of Dijkstra's shortest path algorithm 2254 vector algebra 2354 vector algebra 2412 vector algebra 1130 vertex connectivity 1308 vertex connectivity 2320 vertex connectivity

            posted @ 2010-03-22 22:37 ACTime 閱讀(486) | 評論 (0)編輯 收藏

            2010年2月21日

            百度筆經&面經(zz,詳細!贊!)

            百度筆經&面經(zz,詳細!贊!)
            2007年10月20日 星期六 16:34發信人: ptlj (PT), 信區: Job_Discuss
            ?標 題: 百度筆經&面經 發信站: 武漢白云黃鶴站 (2007年10月08日12:50:13 星期一)
            ?看了一下精華區,好像關于百度的筆經和面經很少,所以上來發一下,積攢RP~~PS:我投的是商務搜索部的引擎研發工程師。

            【筆試】百度的在華科的筆試在9月21號晚上宣講會后馬上舉行。宣講會那叫一個人山人海, 很多不是畢業班的人也來湊熱鬧感受一下百度招聘。筆試題目有選擇題,編程題,系統設 計題三種類型。選擇題難度不是很大,但我太水了,很多基礎知識都不記得了,正則表達 式,shell編程~~~汗死,不說了,好多都是蒙的。 編程題有3題,第一題是找出字符串 的最長不重復子串,輸出長度。我想了半天,只會O(n^2)的算法,是個人都可以想出來的 笨辦法,想著寫下來也沒啥意義,題目問有沒O(n)的,那看來肯定有O(n)的,就不寫 了,看后面的題算了。第二題是找出一個字符串的最長回文子串。這個問題好像以前考研 復習數據結構時看過,想起來判斷一個回文串可以用棧來實現,稍微回憶一下,算法思路 就出來了。于是提筆寫下了個O(n^3)的算法。汗死了,自己太笨了,只能想出這種垃圾算 法,看來百度不好混啊。第三題是在2.5億個整數中找出不重復的整數,內存空間不足以容 納這2.5億個整數。這種題是百度的特色,海量數據處理,我也沒啥思路。既然不能一次扔 進內存,我就分批扔進去,盡量減少從外存讀進內存的次數,然后算了一下,分2批扔進內 存。然后每批排序,找出每批里面不重復的數,把這些不重復的再在另一批數中過一遍,去掉重復的,然后匯總。寫不出具體代碼,只把思路寫了一下。當時心情沮喪極了,想著,掛了,代碼不會寫,難得寫出一題又是效率極低的。最后那道系統 設計題,我壓根沒啥好思路,題目大概是海量數據分布在100臺電腦中,想個辦法高效統計 出這批數據的TOP10。草草寫了幾筆,時間就到了,交卷~~~看來,這次除非有奇跡,不 然筆試肯定被BS了。

            考完回到寢室,和兄弟們討論一下題目,第一題原來可以用Hash實現,時間復雜度降 到O(n)。自己仔細想了一下,整個算法的思路就清晰了,郁悶啊,這么簡單的題居然沒想 出來,看來自己還是太菜了。ZZ對第二題還有個新穎的算法,學習了一下,贊啊,虧他想 得出來,呵呵。第二天還有Microsoft的筆試,趕緊拿Primer來抱抱佛腳,這么好的一本書 ,我學C++時怎么就沒看啊?后悔,懊惱充斥著我的大腦,大有相見恨晚的感覺。 雖然自己筆試很爛,但是還是寄希望于奇跡出現,能有機會去面試。于是晚上睡覺開著手機,因為座談會時百度說如果筆試通過,當晚凌晨就會出面試通知了。晚上輾轉反側 ,難以入睡,期待手機鈴聲響起,都不知道幾點才睡著。早上起床一照鏡子,大熊貓再現拉,唉,為百度消得我憔悴啊。自己空想也沒用,眼前還有MS等著我呢。考MS時,手機都沒關,就等著百度電話,希望考試時能有電話來。果然,早上11點多還在考試時,手機響起,掛掉,我還在為了MS筆試而撓頭呢。幾分鐘后,又響了一次,再次掛掉。考完試,出 考場拿手機一看,咦,是027的哦,好像是個小靈通。回撥,不通,繼續回撥,還是不通, 不死心,我就不信撥不通你。結果撥了10多次還是不通,算了,只好等他再打來。回實驗 室,上Q問問這個號碼是不是百度的,JG他們說是的,驚喜,Oh,yeah,百度面試來臨了, Miracle居然發生了。于是和JG,DJ,Q拼車去弘毅面百度。結果面官說我不接電話,他們安排了其它同學面試,叫我第二天早上10點再來面。FT,怎么這么曲折啊,不過給我點時 間復習準備,也好。


            【一面】 晚上好好看了一下項目,把重點溫習了一下。又問了下JG面試問了啥,心里有個底了 。第二天,一個人飛的去了弘毅,花了22大洋,好心疼啊。去到昨天那個房間,看見面官 了,一個光頭,和JG昨天的面官一樣。果然,他上來就問了我昨天問JG的同樣問題,設計 一種數據結構,結合了鏈表和數組的優點。我想了一下,說用Hash鏈表,這樣插入和查找 的效率都比較高,但是有conflict問題要解決。他馬上就問我如何解決conflict問題,有沒什么好方法。我說修改hash函數,使得hash值產生的conflict概率盡可能低。他問那你怎么設計?我倒,這個問題我可沒想過啊。當場郁悶了,立馬陷入苦思狀態。想出幾個點 子,都不管是否可以降低conflict的概率,都和面官說了。他很快就舉例否定我好不容易 想出的點子,說你的辦法還是不行哦,有沒更好的?打擊死了,我已經盡力了啊,沒想到這么快就被他找到反例,郁悶死我了。不過面官人很好,看我實在想不出更好的了,就不為難我了,換下一個題目。后面一題是海量日志數據,提取出某日訪問百度次數最多的那個IP。想了一下,說了個思路。面官就問你這樣需要的存儲空間太大,有沒優化方法。看 來思路是正確的了,但是優化問題嘛,好棘手啊。我又說了個優化的方法,面官不太滿意,搖頭。完了,實在想不出來了。。。。面官見我苦思冥想,也不為難我了。接著就問了下項目經驗,我balabala一通,他對我的項目不太感冒,沒問什么問題。 然后就問筆試卷子了,他問我第一題干嘛空白?我說了原因,他問我現在有好的想法 沒?我就把自己考完后想的O(n)的算法說了一下,他比較滿意,沒問我什么就問第二題 了。我又說了下我當時的算法思想,他問有沒更好的優化算法?我說可以做到O(n^2), 把思路說了下。似乎不是他的滿意答案,也沒問我啥。接著問第三題,我把我的想法說了 。他說,你最后還需要折半查找這么麻煩嗎?對2個有序的數組,查找A數組的元素是否在 B數組中出現有沒更好的算法?我想了一下,突然靈機一動,想起歸并排序的算法。就說, 是不是像歸并數組那樣,直接在B中定位出A的位置,這樣就可以在O(m+n)內實現。他比較滿意,說:“是啊,都有序了,你還折半這么麻煩啊?”暴汗,看來面官水平比我高太多了,思維跟不上。然后看面官總算露出點笑容,忍不住問句:“你覺得我這個算法可以接受不?”他的回答讓我很吃驚,他說:“當然可以接受拉,我覺得挺好的啊,不過你的算法要訪外存,可能時間效率不是很高。不過先要完成題目的任務,再考慮優化。”我趕緊補一句:“是啊,先要讓它work,再考慮如何讓它work better。”面官還來句:“不過這個題最好的算法可以一次把2.5億數據扔進內存,這需要你設計一個好的數據結構。”我問:“這個,怎么設計哦?”面官表示不能告訴我答案,讓我自己回去想。 這時,面官看看表,我也看看表,已經面了50分鐘了。他說:“現在我們再做2道數學推理題。第一題,2個盒子,容量足夠大,現在有50個紅球,50個藍 球,你如何安放這 些球進盒子,使得我隨機抽取一個盒子,然后從里面隨機抽一個球,這個球是紅球的概率 最大?給你2分鐘時間考慮,直觀分析給出結果。”當場我就暈倒了,從小到大,我都不會 做IQ題的啊,這可是我的最弱項。沒辦法,不能直接說我不會啊。只好硬著頭皮上,分析 一下,我說:“列條概率的表達式,求最值,可以求出結果。”他說:“你這樣搞2個小時 都算不出結果。從直觀上分析就可以知道結果了。你再想想”,被打擊了。只好繼續想, 我想,那把50個紅球放到一個盒子,另一個盒子全放藍球,這樣一個有100%,另一個是0 %,平均下來有50%。也不理想啊,這個時候,靈感再次突現,50個紅球全放一個盒子不 是浪費嘛?放1個也是100%,2個也是100%,那就放一個好了,其它全部扔到另一個盒子和 藍球一起。再想一下,這樣概率有75%,應該很高了。也沒仔細想是不是正確答案,就脫 口而出,說了這種放法。面官再次露出笑容,說“正確!”我那時心里好激動啊,沒想到 運氣這么好,居然還答對了。接著又來下一題,A射擊命中率80%,B60%,C40%,A,B,C互為競爭對手,每人都知道另外2人的命中率,3個人同場 競技互相射擊,同時開了第一槍,問第一槍射后,誰最有可能掛掉?我分析了一下,說了答案,他問我思路,我說了我的思路后,他居然來句:“你的思維和別人不 一樣。”FT,我和別人不一樣,估計說錯了,自己確實回答IQ題比別人笨一截,沒辦法。面官說:“好了,時間差不多了。你有什么問題問我不?”我問:“如 果我有幸通過一面,什么時候會二面?”“通過的話,明早就二面。”然后,和面官握了下手,就這樣結束了我的一面。 面完一面后,去找LP吃飯,下午陪她上自習,感覺自己一面還行吧,大部分題都答出了思路,雖然進一步的優化沒有想完整,而且運氣也好得不得了,連最后2題居然還被我蒙對1題,如果進不了2面,只能說明自己離百度的要求還是差距太大了。結果好運再次降臨,晚上6點多接到電話,通知第二天早上10點去二面,呵呵,竟然進了二面,真是 too lucky。


            【二面】 第二天準時去到面試房間,換了位面官面我。一上來就問我一道海量數據處理題。題目是:很多記錄數據,有ID號,還有幾個不同的屬性域,現在要根據ID號高速查詢到對應 ID號的數據,設計個算法。然后,現在要根據特定的屬性域排序查詢,既要高效找到排名 在第N-M名的記錄,還要經常插入,刪除記錄。我說,查詢ID可以用Hash表查詢,把ID號hash,然后可以在O(1)查到對應的記錄。第二個問題,有點復雜,類似于結合數組和鏈表的優點設計數據結構。我說了好幾種方案,問他這樣行不行。他說:“你自己覺得行不行啊 ,現在是我面你,不是你面我啊,你自己考慮答案啊。”暈倒,我實在想不出更好的,也 不知道應該如何抉擇,備選方案都各有優缺點啊。最后,還是選了其中一種,回答了這個 問題。面官說:“其實這個問題很難有最佳方案,就看你怎么選擇,權衡,選一種較好的 方案。”唉,也不知道我的答案可不可以接受,完全沒了一面時的靈感了。然后面官看了 下我簡歷,驚訝地說道:“你是武漢理工畢業的?”我也很驚訝:“你聽說過這個學校? ”因為我感覺,武漢理工又不是很有名,在北方,連華中科技名氣都不是很響,沒想到面 官竟然知道武漢理工。結果面官說:“我就是武漢理工畢業的啊。”一聽,心中竊喜,居然還有校友,趕緊套一下親近。問他哪一級的,什么時候畢業啊,加入百度多久了之類的問題。然后自己又說了一下個人對武漢理工的感覺,尤其是當年放棄保研名額,選擇去考研。他聽著也覺得有點意思,我就繼續說:“覺得學習氛圍很重要,身邊的同學對自己的影響很大。本科時,很多同學沉溺于網游,都墮落了,自己想找個人討論問題都沒有。現在去了華中科技,身邊的同學都很優秀,經常和同學討論問題,一起進步,感覺很好。”他聽了后點點頭,說:“你這個決定挺正確的。......blabala一通,他也不感冒。他又問我:“干嘛想加入百度公司?”我說:“自己對互聯網技術很感興趣,從本科起對數據結構和算法就有濃厚的興趣。 加上自己將來想搞研發,百度公司的技術很吊,里面的人很強,加入百度可以得到很好的鍛煉,學到很多東西。百度公司現在發展很快,對自己的職場生涯很有幫助。”然后,他問我:“你對搜索引擎了解不?”我說:“之前不了解,聽了座談會后了解了一些。”他又問:“你對自然語言分析處理了解不?”“不懂”說完, 我汗死了,完全不懂,有點不祥的預感了。誰知道,更郁悶的事還在后頭。他接著來一句:“你做的項目都是網絡安全方面的,和我們的活不對口啊?”最讓我擔心 的事終于發生了,我故作鎮定說:“恩,既有網絡安全,也有網絡應用和管理方面的。”然后面官就說:“好了,我的問題差不多了,你有什么問題要問嗎?”我看了下表,倒,才面了30分鐘就沒問題了,看來我方向不對口,他對我已經沒興趣了,不行,這樣草草了結,二面肯定掛掉了,得扯點他感興趣的問題才行。馬上把自己本科的那個畢業設計網絡五子棋里面涉及的算法問題拿出來問問他,看看他有什么優化的方法。他想了一會,說:“這個問題有點復雜哦。”我竊喜,哈哈,該不會把你難倒了吧?接著他來句:“你當時是怎么做的?”我心想,你還真行,把問題又丟回來給我了。我就說了我當時的做法,也得到了他的認可和贊許。恩,第一步目標達成。 然后又問他我投的那個職位對哪方面的要求比較高?他說:“良好的算法和數據結構的基 礎最重要。”我又問:“那數據庫,腳本語言,網絡編程方面呢?”這些都是我的弱項哦 。他說:“這些都有很多現成的成果可以直接利用了,算法和數據結構可能比較難提高, 所以需要有個良好的基礎才行。”聽完,心里有點高興,自己的強項就是算法和數據結構 方面,既然弱項不是很重要,那看來對我的影響不大。這又讓我想起李開復的一句話:“ 你進MS時,懂C#很好,不懂也不要緊,來了可以學。但是如果你不懂得如何學習,那就糟 糕了。”看來,基礎和學習能力是很多大公司所看重得。然后又和面官聊一下武漢理工的 變化,和在華中科技讀研的一些生活。最后,面官說了句:“其實,你的技術還是不錯的 。”聽了這句后,很高興,但是自己對搜索引擎的不了解和專業的不對口又讓自己產生一絲隱憂。最后問了下“還會有3面不?”“Maybe。”和面官say goodbye,然后結束了二面。


            【后記】 二面后就是漫長的等待(其實也就等了6天而已,但是自己已經覺得很漫長了)。期間沒有任何消息,BBS說二面過了就發offer,二面不過就去三面。對這個說法,我持保留意見,身邊很多大牛都去3面了,3面是非技術面,都問你期望的月薪的,自己覺得應該是過了2面的才有3面機會吧。自己一直沒等來3面的電話通知,已經覺得自己掛了。期間找 LP訴苦,她安慰我說:“說不定就像BBS說的那樣,二面過了就不用三面了吧。你干著急也沒用啊,好好復習等消息吧。”雖然是安慰我的話,但是在等待的日子里有個人可以訴苦感覺還是挺好的。聯系了一下內推的那個人,他說他也不知道結果,問我是誰面我的。我說一面是光頭,把二面面官的名字報了一下。他說:“光頭是他們部門經理。”我很驚訝 ,啊?部門經理?看不出來啊,既然部門經理都讓我過1面了,應該機會還挺大的啊,自我感覺一面比二面好多了。每天逛BBS,不僅看白云,還看珞珈山水,交大思源,還有天大求 實。等待真是種煎熬啊,雖然各方面的信息都是朝著不利的一面發展,但是自己還是不死心,一天沒發offer,就還有機會;既然沒發據信,那就還有希望。等啊等,終于在國慶前 一天發offer了,居然自己也有! 回顧這次百度之旅,感覺運氣太好了。一面是部門經理,其實過了他這關基本問題就不大了。恰好自己那天狀態超好,靈感不時出現,臨場超水平發揮,總算過了第一關。第二關在形勢很不利的情況下(連說幾個“不懂”),自己給自己找加分項目,朝著職位的要求往上靠。既然算法和數據結構要求高,我就要表現出自己這個方面有優勢,扯畢業設 計的算法設計和面官聊,表示自己對這方面有興趣,基礎不差。還有突出一下自己其它方 面的優點,例如上進,好學,對技術有偏執(百度系統部老大的經典說法)等。覺得面試時還有一點做得不錯的就是,當面對一個自己沒什么思路的問題時,只要你有什么新想法 ,不要管這個想法是否可行,是否可以真的解決問題,先把它說給面官聽,讓他覺得你的 思考問題的能力還是很強的。一定不要想了半天,結果說“不知道”這樣面官對你的印象 就會很差。雖然你的idea可能不是很work,但是只要是朝著正確的方向前進就OK拉,面試官會給你一定的指引的。你繼續朝著那個方向想,說不定很快就可以解決問題了。 以前都是看別人的面經,獲益良多,這次自己寫寫筆經,面經,希望對大家有幫助。 最后,希望大家都能找到自己滿意的工作,其實付出和收獲真是成正比的。可以從事自己 喜歡的工作,真是很高興。目標和準備方向的正確可能是我這次應聘成功的最主要因素之一吧。我投簡歷只投研發的崗位,對不搞技術的公司壓根沒投,不管公司有多大有多好, 像P&G,MARS,國企,公務員等。一來不想占用別人的機會,二來也知道自己更適合在技術 方面發展,去非技術類公司自己的發展可能不如技術類公司。呵呵,寫得我好累啊,就寫到這吧,希望能對大家有用。

            posted @ 2010-02-21 16:37 ACTime 閱讀(1074) | 評論 (2)編輯 收藏

            2010年2月6日

            卡特蘭數(Catalan數)

                  原理

              令h(1)=1,h(0)=1,catalan數滿足遞歸式:
              h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2)
              另類遞歸式:
              h(n)=((4*n-2)/(n+1))*h(n-1);
              該遞推關系的解為:
              h(n)=C(2n,n)/(n+1) (n=1,2,3,...)

              卡特蘭數的應用
              (實質上都是遞歸等式的應用)
              

            括號化問題


              矩陣鏈乘: P=a1×a2×a3×……×an,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?(h(n)種)
              

            出棧次序問題


              一個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列?
              分析:對于每一個數來說,必須進棧一次、出棧一次。我們把進棧設為狀態‘1’,出棧設為狀態‘0’。n個數的所有狀態對應n個1和n個0組成的2n位二進制數。由于等待入棧的操作數按照1‥n的順序排列、入棧的操作數b大于等于出棧的操作數a(a≤b),因此輸出序列的總數目=由左而右掃描由n個1和n個0組成的2n位二進制數,1的累計數不小于0的累計數的方案種數。
              在2n位二進制數中填入n個1的方案數為c(2n,n),不填1的其余n位自動填0。從中減去不符合要求(由左而右掃描,0的累計數大于1的累計數)的方案數即為所求。
              不符合要求的數的特征是由左而右掃描時,必然在某一奇數位2m+1位上首先出現m+1個0的累計數和m個1的累計數,此后的2(n-m)-1位上有n-m個 1和n-m-1個0。如若把后面這2(n-m)-1位上的0和1互換,使之成為n-m個0和n-m-1個1,結果得1個由n+1個0和n-1個1組成的2n位數,即一個不合要求的數對應于一個由n+1個0和n-1個1組成的排列。
              反過來,任何一個由n+1個0和n-1個1組成的2n位二進制數,由于0的個數多2個,2n為偶數,故必在某一個奇數位上出現0的累計數超過1的累計數。同樣在后面部分0和1互換,使之成為由n個0和n個1組成的2n位數,即n+1個0和n-1個1組成的2n位數必對應一個不符合要求的數。
              因而不合要求的2n位數與n+1個0,n-1個1組成的排列一一對應。
              顯然,不符合要求的方案數為c(2n,n+1)。由此得出 輸出序列的總數目=c(2n,n)-c(2n,n+1)=1/(n+1)*c(2n,n)。
              (這個公式的下標是從h(0)=1開始的)
              類似:有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧)
              

            凸多邊形的三角剖分問題


              
              求將一個凸多邊形區域分成三角形區域的方法數。
              類似:一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她從不穿越(但可以碰到)從家到辦公室的對角線,那么有多少條可能的道路?
              類似:在圓上選擇2n個點,將這些點成對連接起來使得所得到的n條線段不相交的方法數? 
              

            用給定節點組成二叉樹的問題


              
              給定N個節點,能構成多少種不同的二叉樹
              (能構成h(N)個)

            posted @ 2010-02-06 10:43 ACTime 閱讀(617) | 評論 (0)編輯 收藏

            2010年2月5日

            【做題計劃】2-5

            BUPT OJ
            1094ACM的組隊
            1095探險家Javaman
            1096老鷹捉小雞
            1098機器人工廠
            1099Plant
            1010Snooper
            1011PrisonBreak
            1012SuperRock教授的教案

            posted @ 2010-02-05 00:48 ACTime 閱讀(281) | 評論 (0)編輯 收藏

            2010年1月1日

            POJ 1797 Heavy Transportation(最大樹最小邊變形)

            題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1797
            題目描述:求從指定起點到指定終點每條可能路徑上各段邊的最小值
            注意事項:有向圖/無向圖
            提交情況:3次Runtime Error,是最開始嘗試用Kruskal時間接排序的數組r大小只開了MAXN個;3次WA的主要原因是無向圖按照有向圖做的。用鄰接表存儲圖時一定要注意有向圖和無向圖的問題,已經出錯好幾次了。
            心得體會:本道題實際是按照Prim求最大生成樹的思路,逐條添加邊;在添加的過程中,注意從1點出發,在遇到n時,即使最大生成樹仍沒有構造完,也可以從函數中返回了。最開始以為是簡單的生成樹問題,所有用Kruskal來作,遇到起點和終點都訪問過就退出,但此時,構造的生成樹可能根本就沒有連接,而Prim在構造的初始就是從一棵樹開始拓展的,不會出現這個問題。需要對每個具體的算法有更深入的理解。
             1 #include<queue>
             2 #include<stdio.h>
             3 #include<string.h>
             4 using namespace std;
             5 
             6 #define MAXN 1010 
             7 #define MAXM 1000010 
             8 
             9 struct Edge
            10 {
            11     int start;
            12     int end;
            13     int weight;
            14 
            15     bool operator>(const Edge &e) const
            16     {
            17         return weight<e.weight;
            18     }
            19 };
            20 
            21 Edge edge[2*MAXM];
            22 int visited[MAXN];
            23 int first[MAXN];
            24 int next[2*MAXM];
            25 
            26 int Prim(int n)
            27 {
            28     memset(visited,0,sizeof(visited));
            29     int result = 10000000;
            30     priority_queue<Edge,vector<Edge>,greater<Edge> > pq;
            31     for(int e=first[1];e!=-1;e=next[e])
            32     {
            33         pq.push(edge[e]);
            34     }
            35     visited[1]=1;
            36    
            37     while(!pq.empty())
            38     {
            39         int start = pq.top().start;
            40         int end = pq.top().end;
            41         int weight = pq.top().weight;
            42         pq.pop();
            43 
            44         if(visited[end]==1)
            45             continue;
            46         visited[end] = 1;
            47         
            48         if(weight<result)
            49             result = weight;
            50         if(end==n)
            51            break;
            52         for(int e=first[end];e!=-1;e=next[e])
            53         {
            54             if(visited[edge[e].end]==0)
            55             {
            56                 pq.push(edge[e]);
            57             }
            58         }
            59     }
            60     return result;
            61 }
            62 
            63 int main()
            64 {
            65     int snum;
            66     scanf("%d",&snum);
            67     for(int i=1;i<=snum;i++)
            68     {
            69         int n,m,start,end,weight;
            70         scanf("%d%d",&n,&m);
            71         
            72         memset(first,-1,sizeof(first));       
            73         for(int j=0;j<2*m;j+=2)
            74         {
            75             scanf("%d%d%d",&start,&end,&weight);
            76             
            77             edge[j].start = start;
            78             edge[j].end = end;
            79             edge[j].weight = weight;
            80 
            81             edge[j+1].start = end;
            82             edge[j+1].end = start;
            83             edge[j+1].weight = weight;
            84 
            85             next[j] = first[start];
            86             first[start] = j; 
            87 
            88             next[j+1= first[end];
            89             first[end] = j+1;
            90               
            91         }
            92 
            93         int result = Prim(n);
            94         printf("Scenario #%d:\n",i);
            95         printf("%d\n\n",result);
            96     }
            97 }

            posted @ 2010-01-01 14:24 ACTime 閱讀(853) | 評論 (0)編輯 收藏

            2009年12月22日

            Poj 1840 Eqs

            題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1840
            題目描述:求方程的根的個數
            注意事項:hash可以用char,避免占用內存過多
            提交情況:1次MLE,用int開數組太大了
            心得體會:暫無
             1 #include<stdio.h>
             2 #include<string.h>
             3 
             4 int calCube(int x)
             5 {
             6     return x*x*x;
             7 }
             8 
             9 char hash[25000010];
            10 
            11 int main()
            12 {
            13     int a1,a2,a3,a4,a5;
            14     scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5);
            15 
            16     int result;
            17     memset(hash,0,sizeof(hash));
            18     for(int i=-50;i<=50;i++)
            19     {
            20         if(i==0)
            21             continue;
            22         for(int j=-50;j<=50;j++)
            23         {
            24             if(j==0)
            25                 continue;
            26             for(int k=-50;k<=50;k++)
            27             {
            28                 if(k==0)
            29                     continue;
            30                 result=a1*calCube(i)+a2*calCube(j)+a3*calCube(k);
            31                 if(result>12500000||result<-12500000)
            32                     continue;
            33                 hash[result+12500000]++;
            34             }
            35         }
            36     }
            37 
            38     int ans=0;
            39     for(int i=-50;i<=50;i++)
            40     {
            41         if(i==0)
            42             continue;
            43         for(int j=-50;j<=50;j++)
            44         {
            45             if(j==0)
            46                 continue;
            47             result=a4*calCube(i)+a5*calCube(j);
            48             result=-result;
            49             ans+=hash[result+12500000];
            50         }
            51     }
            52 
            53     printf("%d\n",ans);
            54 }

            posted @ 2009-12-22 12:32 ACTime 閱讀(683) | 評論 (0)編輯 收藏

            2009年12月19日

            POJ 1416 Shredding Company

            題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1416
            所用算法:枚舉(01枚舉)
            注意事項:注意位操作,要細心
            提交情況:半個月前(12月4號,兩次wa),今天重新讀題又完全換思路重寫了一遍,ac
            心得體會:數據量小,直接枚舉就可以,并不一定必須要深搜或剪枝。這道題如果深搜的話,剪枝的條件也是非常明顯的。代碼很亂,希望半個月后review的話還能看得懂。
            1 #include<iostream> 2 #include<stdio.h> 3 #include<math.h> 4 #include<stdlib.h> 5 #include<string.h> 6 using namespace std; 7 8 int calvalue(int t,int sum) 9 { 10 int result=0; 11 int j=0; 12 for(int i=0;i<=5;i++) 13 { 14 if(t&(1<<i)) 15 { 16 result=result+sum%(int)pow(10,j+1); 17 sum=sum/(int)pow(10,j+1); 18 //printf("%d %d\\n",result,sum); 19 j=0; 20 } 21 else 22 { 23 j++; 24 } 25 } 26 return result+sum; 27 } 28 29 int printvalue(int t,int sum) 30 { 31 int stack[10]; 32 int top=0; 33 int j=0; 34 for(int i=0;i<=5;i++) 35 { 36 if(t&(1<<i)) 37 { 38 stack[top++]=sum%(int)pow(10,j+1); 39 sum=sum/(int)pow(10,j+1); 40 j=0; 41 } 42 else 43 { 44 j++; 45 } 46 } 47 stack[top++]=sum; 48 while(top!=1) 49 { 50 printf("%d ",stack[--top]); 51 52 } 53 printf("%d\\n",stack[0]); 54 } 55 56 int main() 57 { 58 int target; 59 char num[7]; 60 //freopen("data.in","r",stdin); 61 while(scanf("%d%s",&target,num)==2) 62 { 63 if(target==0&&num[0]=='0') 64 break; 65 int sum=0; 66 int flag=0; 67 int length=strlen(num); 68 int minvalue=0; 69 int partition=-1; 70 for(int i=0;i<length;i++) 71 { 72 sum=10*sum+num[i]-'0'; 73 minvalue+=num[i]-'0'; 74 } 75 76 if(sum==target) 77 { 78 printf("%d %d\\n",target,sum); 79 continue; 80 } 81 else if(minvalue>target) 82 { 83 printf("error\\n"); 84 continue; 85 } 86 else 87 { 88 minvalue=0; 89 int mysum=0; 90 int times=1<<(length-1); 91 for(int j=0;j<times;j++) 92 { 93 mysum=calvalue(j,sum); 94 if(mysum==minvalue) 95 { 96 flag=1; 97 } 98 else if(mysum<=target&&mysum>minvalue) 99 { 100 minvalue=mysum; 101 flag=0; 102 partition=j; 103 } 104 } 105 } 106 if(flag==1) 107 { 108 printf("rejected\\n"); 109 } 110 else 111 { 112 printf("%d ",minvalue); 113 printvalue(partition,sum); 114 } 115 116 } 117 } 118

            posted @ 2009-12-19 19:36 ACTime 閱讀(424) | 評論 (0)編輯 收藏

            2009年12月18日

            POJ 3083 Children of the Candy Corn(bfs求最短路/迷宮)

                 摘要: 題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3083題目描述:求最短路,求沿特定方向走迷宮的步數所用算法:最短路用bfs求,特定方向走迷宮直接用while計數(這里寫的比較繁瑣,要細心,本來看題目分類是在dfs里面的,以為這要用dfs,細想想不用,而求迷宮最短路徑,bfs應該是首選了)提交情況:1次wa(忘了加<stdio.h>頭...  閱讀全文

            posted @ 2009-12-18 14:27 ACTime 閱讀(1379) | 評論 (0)編輯 收藏

            POJ 1936 All in All

            題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1936
            所用算法:字符串
            提交情況:1A
            注意事項:無
            心得體會:水題
             1 #include<stdio.h>
             2 
             3 char s[100010];
             4 char t[100010];
             5 
             6 int judge(char s[],char t[])
             7 {
             8     int i=0;
             9     int j=0;
            10     while(s[i]!='\0'&&t[j]!='\0')
            11     {
            12         if(s[i]==t[j])
            13         {
            14             i++;
            15             j++;
            16         }
            17         else
            18         {
            19             j++;
            20         }
            21     }
            22     if(s[i]=='\0')
            23         return 1;
            24     else
            25         return 0;
            26 }
            27 
            28 int main()
            29 {
            30     //freopen("data.in","r",stdin);
            31     while(scanf("%s %s",s,t)==2)
            32     {
            33         if(judge(s,t))
            34             printf("Yes\n");
            35         else
            36             printf("No\n");
            37     }
            38 }

            posted @ 2009-12-18 11:55 ACTime 閱讀(1375) | 評論 (0)編輯 收藏

            2009年12月17日

            POJ 2299 Ultra-QuickSort

            題目鏈接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2299
            題目描述:求冒泡排序的交換次數
            所用算法:用歸并排序,求逆序數的個數
            提交情況:1次tle(直接冒泡排序n^2的復雜度,對于5000000的數據量,必然超時),1次wa(統計個數時整數溢出了),1a
            心得體會:初看題目很簡單,沒有往數據量方面想,直接冒泡計數提交,然后看著poj上一直running&&judging直到tle, 時限7000ms呀。沒做過逆序數的類似問題,而且題目本身分類也在排序那,然后考慮是不是能快排一下,比較排序前和排序后各個數的位置。考慮再三,發現解決不了。去論壇上瞄了一眼,看到可以用逆序數解,于是百度+算法導論,學到了如何用歸并排序計算逆序數的數目,寫成程序,中間還出現了一次wa,然后就ac了。我在看算法導論時,因為merge在書一開始講的,想平時排序都是快排為主流,就沒有仔細想過merge可能的變種,這道題充分印證了,即使merge本身可能用的不多,但分冶的思想卻是無所不在
            類似題目:poj1804
             1 #include<iostream>
             2 #include<stdio.h>
             3 using namespace std;
             4 
             5 int num[500010];
             6 int left_t[500010];
             7 int right_t[500010];
             8 
             9 long long count=0;
            10 
            11 void merge(int a[],int p,int q,int r)
            12 {
            13     int n1=q-p+1;
            14     int n2=r-q;
            15     for(int i=1;i<=n1;i++)
            16     {
            17         left_t[i]=a[p+i-1];
            18     }
            19     for(int i=1;i<=n2;i++)
            20     {
            21         right_t[i]=a[q+i];
            22     }
            23     left_t[n1+1]=0x7fffffff;
            24     right_t[n2+1]=0x7fffffff;
            25 
            26     int i=1;
            27     int j=1;
            28     for(int k=p;k<=r;k++)
            29     {
            30         if(left_t[i]<=right_t[j])
            31         {
            32             a[k]=left_t[i];
            33             i=i+1;
            34         }
            35         else
            36         {
            37             a[k]=right_t[j];
            38             j=j+1;
            39             count+=n1-i+1;
            40         }
            41     }
            42 }
            43 
            44 void merge_sort(int a[],int p,int r)
            45 {
            46     if(p<r)
            47     {
            48         int q=(p+r)/2;
            49         merge_sort(a,p,q);
            50         merge_sort(a,q+1,r);
            51         merge(a,p,q,r);
            52     }
            53 }
            54 
            55 int main()
            56 {
            57     int n;
            58     scanf("%d",&n);
            59     while(n!=0)
            60     {
            61         for(int i=0;i<n;i++)
            62         {
            63             scanf("%d",&num[i]);
            64         }
            65         merge_sort(num,0,n-1);
            66         printf("%lld\n",count);
            67         count=0;
            68         scanf("%d",&n);
            69     }
            70 }

            posted @ 2009-12-17 14:00 ACTime 閱讀(2683) | 評論 (0)編輯 收藏

            亚洲精品午夜国产va久久| 欧美一区二区三区久久综合| 久久亚洲国产成人精品无码区| 精品久久人人做人人爽综合 | 品成人欧美大片久久国产欧美| 久久不见久久见免费影院www日本| 久久青青草原精品国产不卡| 久久人妻少妇嫩草AV蜜桃| 久久亚洲国产成人精品性色| 99精品国产在热久久| 精品久久久久久无码中文字幕| 一本大道久久东京热无码AV| 日本人妻丰满熟妇久久久久久| 国产91久久精品一区二区| 久久精品免费网站网| 久久精品国产男包| 久久精品国产秦先生| 亚洲国产成人久久综合一区77| 亚洲成色www久久网站夜月| 日韩一区二区久久久久久| 亚洲成av人片不卡无码久久 | 久久99精品久久久久久野外| 欧美成人免费观看久久| 91久久婷婷国产综合精品青草| 久久精品国产第一区二区| 亚洲中文字幕无码久久2020| 久久久精品免费国产四虎| 色综合久久天天综线观看| 久久久久亚洲精品天堂| 久久亚洲欧洲国产综合| 精品久久8x国产免费观看| 久久影院久久香蕉国产线看观看| 久久婷婷激情综合色综合俺也去| 精品人妻伦九区久久AAA片69 | 蜜桃麻豆www久久国产精品| 色综合久久久久综合体桃花网| 久久国产成人精品国产成人亚洲| 久久久国产乱子伦精品作者| 亚洲美日韩Av中文字幕无码久久久妻妇 | 久久精品无码午夜福利理论片| 久久久久亚洲av成人无码电影|