-
學(xué)習(xí)道路:
-
通過第一學(xué)期的算法學(xué)習(xí),順利成為一名算法競(jìng)賽選手。
-
學(xué)習(xí)目標(biāo) :通過科學(xué)的方式學(xué)習(xí)算法,向 ACM-ICPC(是計(jì)算機(jī)類競(jìng)賽最有含金量的比賽)獎(jiǎng)牌沖鋒
-
在第二學(xué)期參加比賽,比賽中學(xué)習(xí),學(xué)習(xí)中比賽,其中每年能夠有多次外出比賽的機(jī)會(huì)
參加的主要賽事(A類賽事或企業(yè)認(rèn)可度高的賽事):
比賽 日期 賽制 藍(lán)橋杯 4/6月 OI 天梯賽 4月 IOI 廣東省大學(xué)生程序設(shè)計(jì)競(jìng)賽 5月 ACM 國際大學(xué)生程序設(shè)計(jì)邀請(qǐng)賽 & 中國大學(xué)生程序設(shè)計(jì)邀請(qǐng)賽 5月 ACM 睿抗 7/8月 IOI 百度之星 8/9月 ACM 國際大學(xué)生程序設(shè)計(jì)區(qū)域賽 & 中國大學(xué)生程序設(shè)計(jì)分站賽 10/11月 ACM -
C with STL (string,map,set)
C++基礎(chǔ) 學(xué)習(xí)網(wǎng)址 : https://oi-wiki.org/lang/
- Hello, World!
- C,C++的輸入輸出
- 變量
- 運(yùn)算
- 流程控制語句
- 高級(jí)數(shù)據(jù)類型
- 函數(shù)
- string
- map,set(C++ 標(biāo)準(zhǔn)庫 -> STL容器 -> 關(guān)聯(lián)式容器)
推薦的學(xué)習(xí)視頻:程序設(shè)計(jì)與算法(一)C語言程序設(shè)計(jì) : https://www.icourse163.org/course/PKU-1001553023
課后練習(xí)做他這個(gè)和我們都是一樣的,但這個(gè)課程配套OJ太老了,還是推薦下面練習(xí)的題單

紅色圈起來的部分是和考核強(qiáng)相關(guān)的,沒圈起來并不意味著不重要

位運(yùn)算
位運(yùn)算 學(xué)習(xí)網(wǎng)址 : https://oi-wiki.org/math/bit/
- 與、或、異或
- 取反
- 左移和右移
- 復(fù)合賦值位運(yùn)算符
- 關(guān)于優(yōu)先級(jí)
- 位運(yùn)算的應(yīng)用
- 有關(guān) 2 的冪的應(yīng)用
- 判斷兩非零數(shù)符號(hào)是否相同
- 換兩個(gè)數(shù)
- 操作一個(gè)數(shù)的二進(jìn)制位
- *內(nèi)建函數(shù)(選學(xué))
排序
排序 學(xué)習(xí)網(wǎng)址 :https://oi-wiki.org/basic/sort-intro/
- 冒泡排序
- 歸并排序
- 桶排序
- 快速排序
- 排序相關(guān) STL
- *排序應(yīng)用
Q :排序的循環(huán),遞歸都好抽象?我該如何快速掌握排序的算法?
A: 學(xué)習(xí)算法的快速方法就是將程序每次的執(zhí)行過程打印出來,看出其交換元素或遞歸區(qū)間的改變,詳細(xì)見代碼塊。
以冒泡排序?yàn)槔趯W(xué)習(xí)其算法思想后,將每一階段交換的位置及代碼打印出來,或?qū)χa用紙筆模擬排序過程有助于掌握算法。
Q :好多排序呀!這么多排序算法競(jìng)賽真的用的上嗎?要不要學(xué)那么多,哪個(gè)排序最快,是不是會(huì)一個(gè)就夠了?
A : 各種排序都有其獨(dú)特的應(yīng)用場(chǎng)景,冒泡排序和歸并排序經(jīng)常處理有關(guān)逆序?qū)Φ膯栴};歸并排序和快速排序用到了分治,遞歸的思想,學(xué)習(xí)這個(gè)排序是為了初探分治,遞歸,讓自己能寫出具有分治和遞歸的算法;桶排序元素的值映射到數(shù)組下標(biāo)上,在特定應(yīng)用背景下和后面學(xué)習(xí)權(quán)值線段樹中會(huì)用到;平時(shí)更多用到的是 sort(a + 1, a + 1 + n); ,這個(gè)功能很強(qiáng)大,對(duì)于string, pair,array,和重載了遠(yuǎn)算符的結(jié)構(gòu)體也能進(jìn)行排序,所以會(huì)在二輪考核的機(jī)試中考核 sort(); ,筆試中考察能否正確描述冒泡排序,歸并排序,桶排序,快速排序的思想。
#include <bits/stdc++.h>
using namespace std;
int n = 5;
int a[10] = {0, 3, 4, 5, 1, 2};
int main()
{
cout<<"init array : "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<" "<<a[5]<<'\n';
cout<<'\n';
for(int i = 1; i < n; i++)
{
for(int j = 1; j <= n - i; j++)
if(a[j] > a[j + 1])
{
swap(a[j], a[j + 1]);
cout<<"swap : ";
cout<<"i : "<<i<<" j : "<<j<<'\n';
cout<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<" "<<a[5]<<'\n';
cout<<'\n';
}
}
cout<<"end sort : "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<" "<<a[5]<<'\n';
return 0;
}

練習(xí)
題單 :https://www.luogu.com.cn/training/380528
思維題 : https://www.luogu.com.cn/training/391817#problems
模擬考核 : https://www.luogu.com.cn/training/385785#problems
注意!這個(gè)題單是動(dòng)態(tài)更新的,對(duì)于題號(hào)CF或者AT開頭的題目,需要你去題目來源網(wǎng)站注冊(cè)賬號(hào),提交submit
對(duì)于不會(huì)的題目,可以再想想,也可以看題解或者在群里面問。


本文來自博客園,作者:magicat,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/magicat/p/17755661.html
浙公網(wǎng)安備 33010602011771號(hào)