一般 acm 或者筆試題的時間限制是\(1\)秒或\(2\)秒。
在這種情況下,c++ **中的操作次數控制在\(10^7 \sim 10^8\)為最佳。
下面給出在不同資料範圍下,**的時間複雜度和演算法該如何選擇:
1.\(n \leqslant 30\):指數級別、dfs+剪枝、狀態壓縮dp;
2.\(n \leqslant 100 \rightarrow o(n^3)\):floyd、dp、高斯消元;
3.\(n \leqslant 1000 \rightarrow o(n^2),\; o(n^2logn)\):dp、二分、樸素版dijkstra、樸素版prim、bellman-ford;
4.\(n \leqslant 10000 \rightarrow o(n\sqrt n)\):塊狀鍊錶、分塊、莫隊;
5.\(n \leqslant 100000 \rightarrow o(nlogn)\):各種sort、線段樹、樹狀陣列、set/map、heap、拓撲排序、dijkstra+heap、prim+heap、spfa、求凸包、求半平面交、二分、cdq分治、整體二分;
6.\(n \leqslant 1000000 \rightarrow o(n),\;\)以及常數較小的\(o(nlogn)\)演算法:單調佇列、hash、雙指標掃瞄、並查集、kmp、ac自動機;常數較小的\(o(nlogn)\)的做法:sort、樹狀陣列、heap、dijkstra、spfa;
7.\(n \leqslant 10000000 \rightarrow o(n)\):雙指標掃瞄,kmp、ac自動機、線性篩素數;
8.\(n \leqslant 10^9 \rightarrow o(\sqrt n)\):判斷質數;
9.\(n \leqslant 10^ \rightarrow o(logn)\):最大公約數,快速冪;
10.\(n \leqslant 10^ \rightarrow o((logn)^2)\):高精度加減乘除;
11.\(n \leqslant 10^ \rightarrow o(logk \times loglogk)\),\(k\)表示位數:高精度加減、fft/ntt;
注:這裡的\(log\)指的是以\(2\)為底的對數;
int f(int n)
設\(f=\\)
\(n=1 \quad f_1=1\);\(n=2 \quad f_2=2\);
$f_n=f_+f_ \quad n \geqslant 3 $
int f(int n)
遞迴\(\rightarrow\)遞迴搜尋樹
從 \(1\sim n\) 這 \(n\) 個整數中隨機選取任意多個,輸出所有可能的選擇方案。
輸入乙個整數 \(n\)。
每行輸出一種方案。
同一行內的數必須公升序排列,相鄰兩個數用恰好 \(1\) 個空格隔開。
對於沒有選任何數的方案,輸出空行。
本題有自定義校驗器(spj),各行(不同方案)之間的順序任意。
\(1\leqslant n \leqslant 15\)
3
3
22 3
11 3
1 21 2 3
例:\(n=3\)時的遞迴搜尋樹int st[n];//狀態,記錄每個位置當前的狀態:0表示還沒考慮,1表示選它,2表示不選它
void dfs(int u)
st[u]=2;
dfs(u+1); //第乙個分支:不選
st[u]=0; //恢復現場
st[u]=1;
dfs(u+1); //第二個分支:選
st[u]=0; //恢復現場
}int main()
/*執行空間: 856 kb
*/
總的時間複雜度為\(o[n(1+n+n(n-1)+n(n-1)(n-2)+ \cdots + n!)]\)#include#include#include#include#includeusing namespace std;
const int n=16;
int n;
int st[n];
vector> ways;
//ways代表方案
void dfs(int u)
st[u]=2;
dfs(u+1);
st[u]=0;
st[u]=1;
dfs(u+1);
st[u]=0;
}int main()
//依次列舉每個分支,即當前位置可以填哪些數
for(int i=1;i<=n;++i)
if(!used[i])
}int main()
/*執行空間: 7000 kb
*/
相當於\(p_n^0+p_n^1+p_n^2+\cdots +p_n^n \geqslant n!\)
原式相當於:
\[n(n!+\frac+\frac +\frac+\cdots \frac)
\]對其進行放縮:
\[原始\leqslant n(n!+\frac+\frac +\frac+\frac\cdots \frac) \leqslant n \times n!(1+1+\frac+\frac+\frac+\cdots)\leqslant 3n!
\]故整個時間複雜度小於等於\(o(n \times n!)\)
Lesson Plan 教學計畫 翻譯
計畫是老師的乙個非常重要的技能。這篇文章討論了一些常用課規劃問題 怎樣進入英語課程?每一種教學及課程都是不一樣的。而內容就是要看老師在課堂上要達到什麼樣的目標。然後,作一些推論也是非常的重要。那些感興趣及加入的學生,對於他們所說的東西都是非常的感興趣,並且希望能夠做得更好,所以他們就學得非常的快。要...
Lesson Plan 教學計畫 翻譯
計畫是老師的乙個非常重要的技能。這篇文章討論了一些常用課規劃問題 怎樣進入英語課程?每一種教學及課程都是不一樣的。而內容就是要看老師在課堂上要達到什麼樣的目標。然後,作一些推論也是非常的重要。那些感興趣及加入的學生,對於他們所說的東西都是非常的感興趣,並且希望能夠做得更好,所以他們就學得非常的快。要...
教學計畫 物理必修二
周次 教學內容 第一周5.1曲線運動 5.2質點在平面內的運動 第二週5.3 拋體運動的規律 5.4 平拋運動規律 第三週習題課 5.5 圓周運動 5.6 向心加速度 第四周5.7 向心力 5.8 生活中的圓周運動 第五周習題課 複習評估 單元測試 第六周6.1 行星的運動 6.2 太陽與行星間的引...