一、處理多case的程式設計
18104 練習使用多case解題
while(1) break;
while(scanf("%lld%lld",&c,&d)>1)
scanf有返回值,scanf(「%d %d」,&a,&d)的返回值是2
二、測試的重要性及資料的檔案匯入方式
了解oj的評判的詳細過程,了解各類評判結果(尤其是編譯錯誤、超時、執行時錯誤)對應可能的出錯原因。
編譯錯誤:**格式錯誤、函式標頭檔案沒有新增進去(如cstring)、gcc cpp、書寫錯誤,有拼寫錯誤,常見的就是單詞的大小寫沒有區分開,英文句號寫成英文逗號、有格式錯誤,比如該縮排的沒縮排,漏了括號,又或者忘記加冒號、對於用法錯誤,比如函式的傳入的引數與函式要求的引數不符、基本語法錯誤
超時:死迴圈、**複雜度過高、輸入條件和題目的不符合
執行時候錯誤:輸出結果不對(輸出必要的換行或者大小寫錯誤、有特殊的資料沒有考慮.看看陣列開的是否太小)、格式錯誤。多了少了空格回車什麼的、發生除零錯誤、指標用錯了,導致訪問到不該訪問的記憶體區域。
三、程式的執行時間及複雜度估算
學會找基本操作(單位時間操作)
學會推導資料規模與時間的關係式
下面說一下各個複雜度1s可計算資料的規模:(用機房電腦跑出來的,僅供參考)
線性o(n) : 1s 大概 3e8 個資料 當然這只是執行一條語句; 多條語句 最好不要超過 1e8,感覺1e7都勉強了
o(nlogn)
10^5 ~ 5 * 10^5
o(n^2)
1000 ~ 5000
o(n^3)
200 ~ 500
o(2^n)
20 ~ 24
o(n!)
12四、了解pair、vector、string、stack/queue、map的作用和時間複雜度
五、熟練sort/stable_sort的使用,了解何為穩定的/非穩定的排序演算法
sort是快速排序o(nlogn)實現,因此是不穩定的;stable_sort是歸併排序實現,因此是穩定的o(n2);
對於相等的元素sort可能改變順序,stable_sort保證排序後相等的元素次序不變;
如果提供了比較函式,sort不要求比較函式的引數被限定為const,而stable_sort則要求引數被限定為const,否則編譯不能通過。
18118 勇者鬥惡龍
總結:就是將騎士和惡龍的值從小到大排序(sort),然後一條龍一條龍的殺,如果有一條龍無法被殺掉,則無解。
時間複雜度:o(nlogn+n)=o(logn)
18107 校賽排名
總結:題目就是要我們給選手排名,根據通過題數多的排前,同題數的,罰時少的排前。如果題數相同,罰時也相同,而按資料讀取的先後排。利用sort定義bool函式,來處理優先比較誰,這題就要定義乙個結構體,也就是說用sort函式對結構體進行排序。
時間複雜度:o(nlogn)
六、掌握列舉的技巧並會分析時間複雜度
完美立方
總結:直接暴力求解
時間複雜度:o(n3)或者o(nlognlognlogn)
生理週期
總結:讀入 p, e, i, d
從 d+1 迴圈到 21252, 找到第乙個滿足條件 1)的時間 a、並跳出迴圈
從 a 迴圈到 21252,找到第乙個滿足條件 2)的時間 b、並跳出迴圈
從 b 迴圈到 21252,找到第乙個滿足條件 3)的時間 x、並跳出迴圈
輸出 x-d
時間複雜度:o(1)
稱硬幣在稱量結果為"even』』 的天平兩邊,沒有出現 x ;
如果 w 表示假幣比真幣輕,則在稱量結果為"up』』 的天平右邊一定出現 x、在稱量結果為"down』』 的天平左邊一定出現 x
如果 w 表示假幣比真幣重,則在稱量結果為"up』』 的天平左邊一定出現 x、在稱量結果為"down』』 的天平右邊一定出現 x
在引數str所指向的字串中搜尋第一次出現字元c(乙個無符號字元)的位置。
18443 除法等式
總結:先列舉出c,注意c的每個數字要不一樣,判斷c%a是否為0,然後c/a(a是我們輸入的數字),求的b,再看b裡的數字和c中的是否一樣,這樣我們就能得到c/b=a。
時間複雜度:o(1+1)=o(1)
1079 三角形
先判斷如果是斜邊,則從3開始列舉。
如果是直角邊,則假設為最小的那條邊k,然後斜邊就是a,另外一條就是a-1,通過
aa-(a-1)(a-1)=kk,a=(kk+1)/2,從而確定最大邊的上界,下界比較容易算不解釋,a>sqrt(kk/2)。
時間複雜度:o(n2+n2-√n2/2)=o(n2)
七、掌握遞迴的技巧並會分析時間複雜度
爬樓梯樓梯有乙個台階,只有一種走法;
兩個台階,有2種走法;
有n個台階時,設有count(n)種走法,最後一步走1個台階,有count(n-1)種走法;最後一步走2個台階,有count(n-2)種走法。於是count(n)=count(n-1)+count(n-2)。
此問題類似斐波那契數列。
unsigned long int 無符號型長整形,資料全為正數,範圍較大。
1142 巡邏的士兵
判斷一共有多少種分法
o(logn)
18441 偷懶的士兵
和巡邏的士兵相似,如果如果少於三個人,則那一組一定不會被選走。
o(logn)
八、掌握分治的技巧並會分析時間複雜度
歸併排序
歸併排序的效率是比較高的,設數列長為n,將數列分開成小數列一共要logn步,每步都是乙個合併有序數列的過程,時間複雜度可以記為o(n),故一共為o(nlogn)。因為歸併排序每次都是在相鄰的資料中進行操作,所以歸併排序在o(nlogn)的幾種排序方法(快速排序,歸併排序,希爾排序,堆排序)也是效率比較高的。
逆序數快速排序
九、掌握深搜和廣搜的技巧並會分析時間複雜度
抓住那頭牛
就是訪問每乙個點
o(n)
迷宮問題
廣度搜尋o(n)
城堡問題
18440 走迷宮2
採用廣度搜尋(queue),先要判斷是否為為傳輸門,並且有乙個visit陣列來判斷該點是否有被走過,如果沒有走過,則把這個點放到佇列中去。
時間複雜度:由於每個節點僅被發現一次,因此每個節點入棧和出棧各一次,時間均為o(1),故入棧和出棧總時間為o(v);由於需要對每個節點的鄰接表進行掃瞄,時間為o(adj[u]),總時間為o(e);綜上所示,廣度優先搜尋的時間複雜度為o(v+e).即是圖鄰接表大小的線性函式。
18124 n皇后問題
時間複雜度:n皇后問題如果不進行任何剪枝,以最樸素的觀點來看,其時間複雜度就是 [n的n次方] 。因為 n 行n 列,皇后的排列方式共有 [n的n次方] 種。
大概會將最壞時間複雜度優化至 [n!] ,平均時間複雜度應該也是指數的,因為中間如果遇到不符合的時候,就直接break了,就不會進行接下來了運算,降低了演算法的複雜度。
十、掌握動態規劃的技巧並會分析時間複雜度
數字三角形
遞迴 (重複計算,效率低) o(2^n)
把當前位置(i,j)看成乙個狀態 d[i][j]為從格仔出發能得到的最大和 解為d[1][1]
d(i,j)=a(i,j) +max
遞推 (逆序列舉) o(n^2)
i是逆序列舉的,計算d[i][j]前 所需要的d[i+1][j]
和d[i+1][j+1]一定計算出來了
最長上公升子串行
0-1揹包問題
著一類的問題用遞推的話都是建立乙個二維陣列遞推,然後時間複雜度就是o(n^2)
十
一、掌握貪心的技巧並會簡單證明貪心的合理性
聖誕老人的禮物
電影節9506 吃水果
(1)讀取資料,設定乙個陣列k,下標為第i天,記錄每一天要吃的水平重量
(2)水果按重量由大到小排
(3)由大到小,遍歷每乙個水果,該水果到第w天過期,就從下標w開始倒序查詢陣列k,發現第乙個
陣列k的元素為0,則將該水果的重量賦值到該陣列元素,如果沒有找到為0的,則放棄該水果。
(4)最後將k資料中的數累加起來,就是答案。
時間複雜度:o(nlogn+n2)=o(n2)
2023年計算機一級考試WPSOffice應用教材
2013年計算機一級考試教材已經上市了,詳情如下 書名 全國計算機等級考試一級教程 計算機基礎及wps office應用 2013年版 作者 教育部考試中心 isbn 9787040372366 版別 高等教育出版社 出版日期 2013 5 定價 36元 詳情查 第1章 計算機基礎知識 1.1 計算...
2023年計算機一級考試WPSOffice考試大綱
全國計算機等級考試一級 wpsoffice考試大綱 2013年版 基本要求 1.具有微型計算機的基礎知識 包括計算機病毒的防治常識 2.了解微型計算機系統的組成和各部分的功能。3.了解作業系統的基本功能和作用,掌握windows的基本操作和應用。4.了解文書處理的基本知識,熟練掌握文書處理wps文字...
2023年計算機等級考試一級考試B大綱
基本要求 1.具有計算機的基礎知識。2.了解微型計算機系統的基本組成。3.了解作業系統的基本功能,掌握windows的使用方法。4.了解字表處理的基本知識,掌握windows環境下word和excel 或wps 的基本操作,熟練掌握一種漢字輸入方法。5.了解計算機網路的基本概念和掌握網際網路 int...