㈠ 參加ACM大賽應該准備哪些課程
課程:
(1)基本演算法: 二分,分治,貪心
(2) 離散數學離散數學動態規劃
(3) 搜索演算法:深度優先 搜索,廣度優先搜A*演算法 ,阿爾法貝塔剪枝
(4)數據結構:線段樹, 樹狀數組,並查集,Trie圖
(5)圖論問題:最小生成樹 最短路 強連通分量、橋和割點
(6)網路流演算法:基本的網路流演算法,Dinic演算法,帶上下界的網路流,最小費用流
(7)計算幾何:線與線求交,線與面求交,求凸包,半平面求交等
(8) 離散數學,高等數學,線性代數,初等數論,計算幾何
(9)計算機專業英語
(10)C++;基礎的遞歸、枚舉演算法
1.參賽隊伍最多由三名參賽隊員組成。
2.競賽中命題10題左右,試題描述為英文,比賽時間為5個小時,前四個小時可以實時看到排名,最後一小時封榜,無法看到排名。
3.競賽可以使用的語言:Java, C, C++, Kotlin 和 Python。
4.重點考察選手的演算法和程序設計能力,不考察實際工程中常用的系統編程,多線程編程等等;
5.選手可攜帶任何非電子類資料,包括書籍和列印出來的程序等,部分賽區會對選手攜帶的紙質資料做限制。
6.評委負責將結果(正確或出錯的類型)通過網路盡快返回給選手,除此之外不提供任何額外幫助;
7.每個題目對應一種顏色的氣球,通過該題目的隊伍會得到對應顏色氣球。每道題目第一支解決掉它的隊還會額外獲得一個「FIRST PROBLEM SOLVED」的氣球。
㈡ 檢索和索的區別是什麼
1、順序查找的基本思想
基本思想是:從表的一端開始,順序掃描線性表,依次將掃描到的結點關鍵宇和給定值K相比較。若當前掃描到的結點關鍵字與K相等,則查找成功;若掃描結束後,仍未找到關鍵字等於K的結點,則查找失敗。
2、順序查找的存儲結構要求
順序查找方法既適用於線性表的順序存儲結構,也適用於線性表的鏈式存儲結構(使用單鏈表作存儲結構時,掃描必須從第一個結點開始)。
3、基於順序結構的順序查找演算法
(1)類型說明
typedef struct{
KeyType key;
InfoType otherinfo; //此類型依賴於應用
}NodeType;
typedef NodeType SeqList[n+1]; //0號單元用作哨兵
(2)具體演算法
int SeqSearch(Seqlist R,KeyType K)
{ //在順序表R[1..n]中順序查找關鍵字為K的結點,
//成功時返回找到的結點位置,失敗時返回0
int i;
R[0].key=K; //設置哨兵
for(i=n;R[i].key!=K;i--); //從表後往前找
return i; //若i為0,表示查找失敗,否則R[i]是要找的結點
} //SeqSearch
④順序查找的優點
演算法簡單,且對表的結構無任何要求,無論是用向量還是用鏈表來存放結點,也無論結點之間是否按關鍵字有序,它都同樣適用。
⑤順序查找的缺點
查找效率低,因此,當n較大時不宜採用順序查找
索引查找分兩步進行:
① 將外存上含有索引區的頁塊送人內存,查找所需記錄的物理地址
② 將含有該記錄的頁塊送人內存
注意:
①索引表不大時,索引表可一次讀入內存,在索引文件中檢索只需兩次訪問外存:一次讀索引,一次讀記錄。
②由於索引表有序,對索引表的查找可用順序查找或二分查找等方法。