CCF青少年計算機程序設計評級標準算法
一級標準數組
定義:瞭解什麼是計算機程序,可以編寫計算機程序解決簡單問題。網絡
知識要求:數據結構
一、 程序的基本結構。數據結構和算法
二、 標識符和關鍵字。ide
三、 基本數據類型。函數
四、 常量和變量。學習
五、 算術表達式和關係表達式。測試
六、 整除,求餘運算,經常使用數學函數。優化
七、 賦值語句,輸入輸出語句,複合語句,條件語句(不嵌套),循環語句(不嵌套)。
能力要求:
一、 能用天然語言描述解決簡單問題的方法和步驟。
二、 能用順序,分支,循環語句實現知識要求中的方法和步驟,編寫完整程序。
三、 初步理解算法的意義。
題例:
試題名:求最小,最大數
試題描述:
給出N個數,請找出這N個數中的最小數和最大數。
輸入數據:
第1行,一個整數n,n<=1000。
接下來的一行,包含n個數,兩個數之間用一個空格分隔。
輸出數據:
第1行,最小數。
第2行,最大數。
輸入樣例:
4
1 2 3 4
輸出樣例:
1
4
二級標準
定義:瞭解什麼是算法,可以用程序設計語言實現簡單算法,解決問題。
知識要求:
一、 邏輯表達式。
二、 條件嵌套,循環嵌套,數組。
三、 枚舉,簡單排序,簡單查找算法。
四、 素數與合數,最大公約數,最小公倍數,互質數。
能力要求:
一、 能用簡單枚舉算法解決實際問題,能對數據進行簡單排序和查找。
二、 具有獨立編寫和調試簡短程序的能力。
題例:
試題名:求第k小數
試題描述:
給出N個數,請找出第K小的數並輸出該數值。
輸入數據:
第1行,兩個整數n,k,n,k<=1000。
接下來的一行,包含n個數,兩個數之間用1個空格分隔。
輸出數據:
只有1行,爲第k小數。
輸入樣例:
4 3
1 2 3 4
輸出樣例:
3
三級標準
定義:具備較強的程序實現能力,使用一種計算機程序設計語言編寫程序,解決問題。
知識要求:
一、 數制及其轉化,信息編碼,位運算。
二、 字符串類型。
三、 子程序。
四、 遞歸。
五、 邏輯運算,整數的質因數分解,隨機函數。
六、 篩選法,歐幾里得算法
能力要求:
一、 全面掌握一種計算機程序設計語言。
二、 具備運用簡單數學知識編寫程序解決問題的能力。
題例:
試題名:分解質因數
試題描述:
給一個整數N,將N寫成質因數的乘積。
輸入數據:
一個整數n,n<=100000。
輸出數據:
質因數乘積表達式(請將質因數按從小到大順序輸出)
輸入樣例:
12
輸出樣例:
12=2*2*3
四級標準(NOIP普及組全國前70%)
定義:瞭解幾種經常使用的算法,並運用這些算法編寫程序,解決問題。
知識要求:
一、 結構類型,文件操做。
二、 數據類型的內在含義。
三、 貪心法,遞推,回溯法,模擬算法。
四、 簡單的字符串處理。
五、 集合及集合的運算,加法原理和乘法原理,簡單的排列和組合。
能力要求:
一、 能根據實際額問題選擇合適的數據類型。
二、 能運用貪心、遞推、回溯、模擬等算法解決實際問題。
三、 能獨立設計簡單的測試數據,測試本身程序的正確性。
題例:
試題名:校門外的樹
詳見各oj,laoj也有。
五級標準(NOIP普及組全國前40%)
定義:掌握簡單數據結構知識,並結合已學算法和數學知識編寫程序,解決問題。
知識要求:
一、 指針類型。
二、 通常線性表,隊列,堆棧,二叉樹的存儲和遍歷。
三、 排列和組合,高精度數值的處理。
四、 二分算法,快速排序,深度優先搜索,寬度優先搜索,簡單動態規劃。
五、 圓排列,可重集排列,鴿籠原理,素因數分解,冪函數,指數函數,對數函數,三角函數,模運算,不等式基礎知識。
能力要求:
一、 能運用經常使用算法和簡單數據結構解決實際問題。
二、 能從算法本質出發,分析相關算法之間的本質聯繫。
三、 具有初步的數學建模能力。
題例:
試題名:擺花
詳見NOIP2013普及組
六級標準(NOIP提升組全國前50%)
定義:掌握基本的數據結構知識,可以根據實際需求設計算法編寫程序,解決問題。
知識要求:
一、 樹、圖的存儲。
二、 哈希表、集合數據結構。
三、 圖的最短路,生成樹算法,有向圖的拓撲排序算法。
四、 動態規劃的常見模型,分治策略,各類排序算法。
五、 可重集組合,二項式定理,數列與級數,概括與遞推,容斥原理,函數的連續性、函數的單調性和極值。
能力要求:
一、 能對一些算法和數據結構估算時間複雜度和空間複雜度。
二、 能根據實際問題的模型選擇合適的算法和數據結構來解決問題。
三、 具有知識收集和知識管理的能力。
題例:
試題名:最優貿易
詳見NOIP2009提升組
七級標準(NOIP提升組全國前20%)
定義:綜合運用算法和數據結構編寫程序,解決問題。
知識要求:
一、 並查集,線段樹,哈弗曼樹,二叉排序樹,二叉堆。
二、 圖的連通性算法,最短路,最小生成樹的優化算法,二分圖的構造、斷定及匹配,搜索算法的優化,擴展歐幾里得算法。
三、 中國剩餘定理,剩餘類,機率基礎知識,解析幾何基礎知識。
能力要求:
一、 能根據時間和空間複雜度的要求靈活構造算法和數據結構解決實際問題。
二、 具有較強的程序代碼實現能力。
三、 具有較強的概括、總結和表達能力。
題例:
試題名:關押罪犯
詳見NOIP2010提升組
八級標準(NOI銅牌)
定義:掌握高級數據結構知識,能運用恰當算法編寫程序,解決較複雜問題。
知識要求:
一、 樹狀數組,字典樹,優先隊列,平衡樹。
二、 網絡流算法,複雜的分治思想,樹形動態規劃,狀態壓縮動態規劃,二分圖的匹配,啓發式搜索。
三、 矩陣概念及其基本運算,線性方程組的解法,迭代法,費馬小定理和歐拉定理,母函數。
能力要求:
一、 能針對複雜問題創建清晰的數學模型。
二、 能運用數學知識、高級數據結構和算法解決複雜的問題。
三、 能根據須要,開展基於寫做的學習和研究。
題例:
試題名:能量採集
詳見NOI2010
九級標準(NOI銀牌)
定義:具備對問題進行抽象和數學建模能力,能選用合適的數據結構和算法編寫程序,解決較難問題。
知識要求:
一、 塊狀鏈表,後綴數組,後綴樹,複雜的線段樹。
二、 動態規劃優化,模擬退火算法。
三、 計算幾何基礎知識(點積、叉積、凸包、半平面等知識及應用),數學指望
能力要求:
一、 能針對疑難問題創建清晰的數學模型。
二、 能靈活運用數學知識、高級數據結構和算法解決疑難問題。
三、 具有發現問題、解決問題的探索研究能力。
題例:
試題名:直線和點
文件名:line
試題描述:
平面的n條直線將平面分割成了若干區域,給出m個點,求每一個點所在區域的面積。
爲了防止出現面積無窮大的狀況,有額爲的四條直線框定了平面區域的大小,分別是x=L,y=L,x=-L,y=-L。其中L是給定的正實數,全部的點都在這個框定的區域內。
另外爲了防止精度問題,任意一個點到任意一條直線的距離>10^-7。
輸入數據:
輸入文件名爲line.in。
第一行兩個正整數和一個正實數,n,m,L,意義如上所述。
第2~n-1行每行三個實數A,B,C表示直線的方程爲Ax+By+C=0。
第n+2~n+m+1行每行兩個實數x,y表示點的座標。
輸出數據:
輸出文件名爲line.out。
按輸入的順序輸出每一個點所在的區域面積,每一個一行,保留2爲小數。
輸入樣例:
2 4 3
1 1 -1
-1 1 -1
0 2
-2 1
2 1
0 0
輸出樣例:
4.00
8.50
8.50
15.00
數據範圍:
對於20%的數據,n,m<=10。
對於40%的數據,n,m<=300。
對於100%的數據,n<=500,m<=100000。
對於100%的數據,輸入數據的絕對值<=10^7且最多保留2位小數
十級標準(NOI金牌)
定義:具備必定的提出問題、解決問題的研究能力,能構造算法與數據結構,解決開放性問題。
知識要求:
一、 最小樹形圖,自動機,動態樹,樹套樹,通常圖的匹配。
二、 雙重動態規劃,基於連通性的動態規劃,線性規劃,極大極小搜索算法。
三、 三維計算幾何,組合遊戲中的NIM問題和SG函數,羣的概念,置換羣,Burnside引理,Polya原理,莫比烏斯反演定理,FFT。
能力要求
一、 具有創造性地運用數據結構和算法解決開放性問題的能力。
二、 具有很強的代碼編寫能力。
三、 具有提出問題、並開展相關研究的創新能力。
題例:
試題名:管道取珠
詳見NOI2009