北郵84,92題的心得

84題

時間限制 1000 ms 內存限制 65536 KB

題目描述

  • Given an array with N integers where all elements appear three times except for one. Find out the one which appears only once.

輸入格式

  • Several test cases are given, terminated by EOF.

Each test case consists of two lines. The first line gives the length of array N(1≤N≤105), and the other line describes the N elements. All elements are ranged in [0,2^63−1].

輸出格式

  • Output the answer for each test case, one per line.

輸入樣例

  • 4
    1 1 1 3
    10
    1 2 3 1 2 3 1 2 3 4

輸出樣例

  • 3
    4

    這道題,超時超的我不要不要的,明明O(n)的時間複雜度還是超時。就找了一些別人的答案看了看,覺得應該是卡常數(學了新詞)。因此換用另一種算法,雖然還是O(n)但是不再超時。
    之前的思路:把每個數轉化成二進制,逐位相加,放在數組(數組大小定爲64)裏,最後逐位模3,得到的二進制數轉化爲十進制即爲結果。
    AC的思路:定義一個二維數組,2^63 大約 10^19,所以數組爲20*10。num[i][j]表示第i位出現過數字j的次數,然後從第一列遍歷數組,若模3得1則直接輸出j。
    可見,同爲O(n)也是存在差別的。(代碼參照了別的博主,就不貼了)
    遇到這種題上來就想換成二進制算,也不知道什麼毛病。換來換去還挺耗時間的。

92題

時間限制 1000 ms 內存限制 65536 KB

題目描述

  • 給出一棵有向樹,一共有N(1 小於N≤1000)個節點,如果一個節點的度(入度+出度)不小於它所有兒子以及它父親的度(如果存在父親或兒子),那麼我們稱這個節點爲p節點,現在你的任務是統計p節點的個數。

如樣例,第一組的p節點爲1,2,3;第二組的p節點爲0。

輸入格式

  • 第一行爲數據組數T(1≤T≤100)。
    每組數據第一行爲N表示樹的節點數。後面爲N−1行,每行兩個數x,y(0≤x,y小於N),代表y是x的兒子節點。

輸出格式

  • 每組數據輸出一行,爲一個整數,代表這棵樹上p節點的個數。

輸入樣例

  • 2
    5
    0 1
    1 2
    2 3
    3 4
    3
    0 2
    0 1

輸出樣例

  • 3
    1

    這道題,WA也不知道爲啥,找不到錯在哪裏,用的結構體。後來發現用鄰接矩陣的方法比較優秀,而且以前沒有這麼用過,就換用這種方法,學習學習。
    思路:定義一個二組數組作爲鄰接矩陣,每次輸入一組節點i,j,就分別在matrix[i][j]和val[i],val[j]加一。
    學習使用鄰接矩陣處理兩點相關的問題。代碼不貼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章