1. 程式人生 > >noip 初賽複習重點知識點

noip 初賽複習重點知識點

一.進位制轉化

將k進位制數轉化為十進位制數:

設k進位制數為(abcd)k,則對應十進位制數為d+c^{k}+b*k^{2}+a*k^{3}

(小數同理,乘k的負冪次)

將十進位制數轉成k進位制數:

設十進位制數為x:

t1=x/k,t2=x mod k

t11=t1/k,t22=t1 mod k

......

t1n=t1 n-1 /k,t2 n= t1 n-1 mod k,此時t1n=0

於是k進位制數為t2n t2n-1...t22 t21排列

(小數則乘k取整,從前向後排列)

附錄:進位制的字母表達:

H(Hexadecimal)——16進位制

D(Decimal)——10進位制

O(Octonary)——8進位制

B(Binary)——2進位制

二.邏輯運算

邏輯與:∧(或‘·’)

邏輯或:∨ (或‘+’)

邏輯非:┐

優先順序:邏輯非>邏輯與>邏輯或,有括號按括號,無括號先按優先順序,同級運算從左至右

與位運算結合優先順序:邏輯非(!,┐)=按位反(~)>位移運算(<<,>>)>不等號(>=,<=)>等號(==,!=)>按位與(&)>按位異或(^)>按位或(|)>邏輯與(&&,∧)>邏輯或(||,∨)

三.資料結構

1.二叉樹

(1)二叉樹的三種遍歷方式:

①.先序遍歷:根-左-右

例:

如圖所示,這棵二叉樹的先序遍歷為1245367

②.中序遍歷:左-根-右:

例:

 如圖所示,這棵二叉樹的中序遍歷為4251637

③.後序遍歷:左-右-根

如圖所示,這棵二叉樹的後序遍歷為4526731

結論:給定中序遍歷和先序遍歷或後序遍歷組合都可以確定這棵二叉樹,但是給定先序遍歷和後序遍歷組合則不可確定

 (2)二叉樹特例:

完全二叉樹:對於每個節點,都有兩個子節點

滿二叉樹:對於每個節點,都有兩個子節點且樹完全“平衡”,總節點個數為2^k-1,k∈Z(如上面的樣例)

(3)二叉樹的有關公式:

一棵滿二叉樹:節點個數為2^{k}-1,葉節點個數為2^{k-1}<其中k為樹的高度

二叉樹的深度均攤為log2n,其中n為節點個數(這就是treap等二叉搜尋樹時間複雜度的來源)

2.棧與佇列

(1)棧:只有一個口,後進棧者先出棧

與棧類似的例項(題例):

只有一個口的火車站(為什麼要修成這樣...)

漢諾塔(以及各種積木壘塔遊戲)

 (2)佇列:有head和tail,從尾入隊,從頭出隊,先進先出

3.連結串列:

連結串列:每個元素會有一個指標指向要求的下一個元素

分類:

單向連結串列:每個元素只有一個指標指向下一個元素

雙向連結串列:每個元素有兩個指標,一個指向下一個元素,另一個指向指向他的元素

連結串列可以實現O(n)查詢,O(1)刪除(重構指標即可)

4.圖論有關知識:

完全圖:任意兩點均有連邊的圖,其中邊數為n*(n-1)/2,其中n為圖中節點個數

連通圖:任意兩點之間都能直接或間接通過邊到達的圖

樹:任意兩點之間的簡單路徑有且僅有一條(或有n個點,n-1條邊的連通圖)

尤拉圖:可以一筆畫出來的圖

一個圖是尤拉圖的充要條件(無向圖):度為奇數點的點的個數<=2

相關定義:

尤拉環遊:通過圖中每邊恰好一次的閉路徑

尤拉閉跡:通過圖中每邊恰好一次的路徑

三.IT基礎知識與歷史:

1.程式語言:

程式語言主要分兩類:面向物件和麵向過程

常見的面向物件高階語言:

simula 67,支援單繼承和一定含義的多型和部分動態繫結

Smalltalk,支援單繼承、多型和動態繫結;

EIFFEL,支援多繼承、多型和動態繫結;

C++,支援多繼承、多型和部分動態繫結。

Java,支援單繼承、多型和部分動態繫結。

結論:面嚮物件語言常見特點:封裝,繼承,多型

常見的面向過程高階語言:

C語言

Fortran語言

 常見的低階語言:

彙編

高階語言與低階語言的區別:

高階語言更易移植,需要編譯執行,低階語言(彙編)常數極小,執行速度快

2.計算機歷史

對計算機做出重要貢獻的人物:

圖靈,馮·諾依曼(101頁報告,EDVAC)

計算機的頂級獎項:

圖靈獎

中國獲圖靈獎的人物:

姚期智

第一臺計算機:

ENIAC

第一臺具有儲存程式功能的計算機:

EDVAC

3.計算機硬體原理問題:

微型計算機的面世——超大規模積體電路

計算機儲存:

常見儲存裝置:ROM,RAM,硬碟,U盤,記憶體

四.實際問題的解決:

1.常見遞推問題:

平面分割問題:

n條直線最多將平面分成的部分:f(n)=f(n-1)+n=\frac{n*(n+1)}{2}+1

推廣:n個平面最多將空間分成的部分:g(n)=g(n-1)+f(n-1)=\frac{n^{3}+5n+6}{6}

n條封閉曲線最多將平面分成的部分:f(n)=f(n-1)+2(n-1)=n^{2}-n+2

n條折線最多將平面分成的部分:f(n)=f(n-1)+2(2(n-1) + 1) - 1

n條‘Z’型折線最多將平面分成的部分:f(n)=f(n-1)+ 3(3(n-1)+1)-2

斐波那契數列問題:f(n)=f(n-1)+f(n-2)=\tfrac{1}{\sqrt{5}}((\tfrac{\sqrt{5}+1}{2})^{n}-(\tfrac{\sqrt{5}-1}{2})^{n})

卡特蘭數列問題:f(0)=1,f(1)=1

f(n)=\sum_{i=0}^{n-1}f(i)f(n-1-i)

2.