隨著即將迎來祖國70年大慶,CSP-J/S的第一輪比賽也將到來。
33老師和陳老師抽出時(shí)間整理了第一輪考試中的重難點(diǎn),幫助大家在賽前更好的梳理題型和方法。
參與此次整理和答疑的老師介紹
33老師(代建杉老師)
NOIP 2012/2013 提高組一等獎(jiǎng)
NOI 2014 江西省隊(duì)隊(duì)員
第八屆藍(lán)橋杯浙江省賽/國賽一等獎(jiǎng)
第九屆藍(lán)橋杯浙江省賽一等獎(jiǎng)(第一名)
陳老師(陳敏煥老師)
畢業(yè)于北京大學(xué)信息科學(xué)與技術(shù)學(xué)院
前 Google Ireland 軟件工程師
前 “九章算法” 聯(lián)合創(chuàng)始人
NOI銀牌保送北京大學(xué)
輔導(dǎo)近30余學(xué)生獲得NOIP省一等獎(jiǎng)
比如特別注重技巧的閱讀程序部分,每題8分,一共4題,我們總結(jié)了如下方法
1、分層讀:分層代碼,逐層深入,正確理解每個(gè)層面的程序片段
2、寫注解:總結(jié)、提煉已有的理解成果,并寫成注釋
3、先模擬:根據(jù)代碼順序跟蹤變量,模擬運(yùn)算
4、找規(guī)律:先模擬幾次循環(huán)后,找出背后的規(guī)律
5、看功能:從代碼結(jié)構(gòu)和運(yùn)算結(jié)果判斷程序功能
6、猜算法:有時(shí)不知道算法,通過結(jié)構(gòu)和函數(shù)猜一猜
7、換方法:了解程序本質(zhì)后,換一個(gè)熟悉的方法試試
具體舉個(gè)例子,NOIP2018年普及組閱讀程序的第三題,一個(gè)復(fù)雜度的遞歸問題,我們可以通過畫表格的方法,變成一個(gè)遞推的問題(簡稱 換方法)
#include <iostream>
using namespace std;
int n, m;
int findans(int n, int m)
{
if (n == 0)
return m;
if (m == 0)
return n % 3;
return findans(n - 1, m) - findans(n, m - 1) +
findans(n - 1, m - 1);
}
int main()
{
cin >> n >> m;
cout << findans(n, m) << endl;
return 0;
}
從如下遞歸關(guān)系中我們發(fā)現(xiàn),(n,m)格子中的數(shù)值是正上方格子與斜上方格子之和減去左邊格子的值。故得出如下表格,我們也計(jì)算出了格子(5,6)中的數(shù)據(jù)是8。
findans(n - 1, m) - findans(n, m - 1) + findans(n - 1, m - 1)
我們希望通過總結(jié)這樣一系列的方法和技巧幫助同學(xué)們平穩(wěn)的通過CSP-J/S的第一輪。
第一課:選擇題模塊(一)
1. 計(jì)算機(jī)常識(shí)
2. 體系結(jié)構(gòu)
3. 軟件與硬件
4. 計(jì)算機(jī)語言
第二課:選擇題模塊(二)
1. 進(jìn)制轉(zhuǎn)換
2. 信息編碼
3. 計(jì)算機(jī)安全
4. 計(jì)算機(jī)網(wǎng)絡(luò)
第三課:選擇題模塊(三)
1. 計(jì)算機(jī)基礎(chǔ)嘗試
2. 邏輯運(yùn)算
3. 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
第四課:選擇題模塊(四)
1. 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)進(jìn)階
2. 多選題真題
第五課:問題求解(一)
1. 排列組合基礎(chǔ)
2. 真題講解分析