歷年NOIP提升組初賽選擇解析

碎片知識點

  • 編譯型語言是編譯一次就能夠轉成計算機能夠直接運行的機器語言程序(如.exe文件)可是因爲他們是直接編譯的,依賴於計算機的不一樣,因此跨平臺能力比較差,可是運行速度高。c++

  • 解釋性語言則是每次運行前編譯,先解釋再運行,致使運行效率下降,可是由於其依託於虛擬機/解釋器因此跨平臺性能好。程序員

  • 高級語言還可分爲面向過程語言和麪向對象語言。(區別天然是有沒有對象)編程

  • 於 1967 年出現的 Simula67 是歷史上第一個面嚮對象語言數組

  • Smalltalk 被公認爲第二個面向對象的程序設計語言,和第一個IDE緩存

  • C 和 Pascal 是純面向過程語言性能

  • 就算沒有對象也能夠學面向對象的程序設計語言 C++編碼

  • 第一個高級語言是fortran,Ada是美國軍方發明的語言,取名Ada是爲了記念第一個女程序員spa

  • 第一個支持面向對象的語言是simula67設計

一、 (NOIP-2004–T19-多選)下列哪一個(些)程序設計語言支持面向對象程序設計方法( ABDE )。
A. C++     B. Object Pascal     C. C     D. Smalltalk     E. Java

C++,object Pascal,VB,smalltalk(第一個支持動態類型的語言),simula67(第一個面向對象的語言),Java是面向對象的
free Pascal,C是面向過程的

題型一:數學

1.1 組合數學

模型:code

  • Catalan數
  • stirling數
  • 容斥原理和錯排
  • 不定方程的整數解(可重排列)
    • 正整數解
    • 非負整數解
  • 插空法
  • 捆綁法

一、(NOIP2004–T2-單選)由3個a,5個b和2個c構成的全部字符串中,包含子串「abc」的共有(D )個。 A. 40320     B. 39600     C. 840     D. 780     E. 60

有必定難度的組合數學題,因爲要出現「abc」,用捆綁法,把 1 個 a,1 個 b,1 個 c 捆綁起來,這樣至關於如今有 1 個「abc」,2 個「a」,4 個「b」,1 個「c」進行排列,根據「不盡相異元素的全排列」的公式(重排)知道,總的狀況是8!/(2!*4!)=840,可是 2 個「a」,4 個「b」,1 個「c」也有可能組成「abc」,840裏有重複的狀況,好比(abc)abcabbb 和 abc(abc)abbb 實際上是一種狀況,因此要減去 2 個「a」,4 個「b」,1 個「c」也組成 abc 的狀況(其實就是隻有兩個元素的容斥原理),那麼這就至關於 2 個「abc」,一個「a」,3 個「b」的全排列數=6!/(2!*3!)=60,因此總的狀況數是 840-60=780。

1.2 拓撲排序

一、(NOIP-2004–T20-多選)某大學計算機專業的必修課及其先修課程以下表所示:

2樹

2.1二叉樹的節點個數計算

一、(NOIP-2004–T4-單選)滿二叉樹的葉結點個數爲N,則它的結點總數爲()。 2∗N–1

基本知識:

  • 滿二叉樹的節點個數=2*子節點個數-1
  • 滿二叉樹的節點個數=2^樹的深度-1
  • 滿二叉樹的葉結點個數=2^(樹的深度-1)

二、(NOIP-2005–T4-單選)徹底二叉樹的結點個數爲4∗N+3,則它的葉結點個數爲(E )。 E. 2∗N+2

三、(NOIP-2006–T8-單選)高度爲n的均衡的二叉樹是指:若是去掉葉結點及相應的樹枝,它應該是高度爲n-1的滿二叉樹。在這裏,樹高等於葉結點的最大深度,根結點的深度爲0,若是某個均衡的二叉樹共有2381個結點,則該樹的樹高爲( B )。B. 11

2.2排序

一、(NOIP-2006–T10-單選)將5個數的序列排序,不論原先的順序如何,最少均可以經過( B )次比較,完成從小到大的排序。 A. 6     B. 7     C. 8     D. 9     E. 10

這個題目實在是玄的一批,5個元素有5!=120個全排列,每一次比較可以減小一半的排列,那麼就只須要⌊log2(120)⌋+1=7次就行了

2.3複雜度計算

二、(NOIP-2006–T4-單選)在編程時(使用任一種高級語言,不必定是Pascal),若是須要從磁盤文件中輸入一個很大的二維數組(例如1000*1000的double型數組),按行讀(即外層循環是關於行的)與按列讀(即外層循環是關於列的)相比,在輸入效率上( E )。 A. 沒有區別     B. 有一些區別,但機器處理速度很快,可忽略不計 C. 按行讀的方式要高一些     D. 按列讀的方式要高一些     E. 取決於數組的存儲方式。

這個仍是真的要看怎麼存的,Pascal在開數組的時候不知道怎麼開,可是c++就是一行開下去地址連續的,因此c++在讀取的時候仍是行優先讀要稍微快一點。因此仍是取決於地址怎麼分配了。

3.1硬件基礎

四、(NOIP-2004–T17-多選)下列說法中正確的有( ADE )。 A. CPU 的基本功能就是執行指令。 B. CPU 的主頻是指 CPU 在 1 秒內完成的指令週期數,主頻越快的 CPU 速度必定越快。 C. 內部構造不一樣的 CPU 運行相同的機器語言程序,必定會產生不一樣的結果。 D. 在一臺計算機內部,一個內存地址編碼對應惟一的一個內存單元。 E. 數據總線的寬度決定了一次傳遞數據量的大小,是影響計算機性能的因素之一。

B的話主頻的定義對的,可是CPU速度還跟其餘東西有關;C大部分狀況下都是對的但不排除特殊的狀況…

七、(NOIP-2005–T7-單選)Intel 的首顆 64 位處理器是( E )。 A. 8088      B. 8086      C. 80386      D. 80486      E. Pentium

這個也是古董了…但因爲比較特殊仍是記一筆吧…8086是首顆16位的,80386是第一顆32位

十、(NOIP-2005–T18-多選)如下斷電以後將不能保存數據的有( BCDE )。 A. 硬盤     B. 寄存器     C. 顯存     D. 內存     E. 高速緩存

  • 寄存器、高速緩存、RAM,讀取速度很快可是斷電後數據會丟失,顯存是內存的一種,主要是在顯卡和GPU當中處理圖像的orz
相關文章
相關標籤/搜索