原创 本人博客已移步博客園

因爲一些特殊原因,把在csdn博客轉移到了博客園。這裏的博客暫時作廢。 My blog

原创 【模板】KMP

int n, m; char a[MAX_N | 1]; char b[MAX_M | 1]; int p[MAX_M | 1]; inline void Init() { p[0] = -1; for(registe

原创 【模板】求逆序對

歸併排序求逆序對 int n; int a[MAX_N]; long long ans; void Merge_Sort(int lt, int rt) { if(lt == rt) return; int mid = lt +

原创 【模板】歸併排序

int n; int a[MAX_N]; void Merge_Sort(int lt, int rt) { if(lt == rt) return; int mid = lt + rt >> 1; Merge_Sort(lt,

原创 【模板】快速輸出

void Write(int x) { if(x < 0) { putchar('-'); x = -x; } if(x >= 10) Write(x / 10); putchar(x % 10 + '0'); }  

原创 【OI】蒟蒻奮鬥史

2017.12.7 機緣巧合下開始oi生涯。 註冊洛谷賬號。 寫出人生第一個cpp程序。   2018.1.5 在洛谷首次AC紅題。   2018.2.23 在洛谷成爲了小小牛。 在洛谷升爲藍名。   2018.4.29 在洛谷首次AC

原创 【圖論】淺析歐拉路

歐拉路介紹 首先大家可以嘗試去看一下專業的解釋。 維基百科(英文) 當然看不懂也沒什麼所謂,本文本身就是想要去簡單地解析歐拉路。 歐拉回路簡單的來說,就是在一張圖G中,如果能夠能夠找到一條路徑,滿足在遍歷路徑的過程中,G中的每條

原创 【題解】Luogu P2690 接蘋果

題目描述 這道題以時間爲階段,是一道很明顯的線性dp。 這道題有一個要點: 因爲只有兩棵樹且初始爲第一棵樹下,所以移動奇數次到達第二顆樹,移動偶數次則到達第一棵樹。 理解這個時候就可以直接推出狀態轉移方程了。 具體可以看下面的代碼來理解。

原创 【模板】Kruskal

int n, m; struct Edge { int u, v, w; }a[MAX_M]; // 令a關於w升序排列 int r[MAX_N]; // 並查集 int Find(int x) { if(r[x] ^ x)

原创 【模板】堆

小根堆 int n; int h[MAX_N]; inline void Insert(int x) { h[++n] = x; int now = n; while(now ^ 1) {

原创 【OI】【總結】初戰NOIP——NOIP2018遊記

前言 從最初接觸oi到複賽結束,也已經將近有一年了。從對於程序一竅不懂到現在開始深入學習算法,只是短短的不到一年的時間罷了。這次noip,不僅僅是我oi生涯的第一次noip,更是相當於是對我這一年的努力的一個檢驗。希望這次能取得一個好的成

原创 【模板】樹的存儲

父親表示法   顧名思義,就是隻記錄每個結點的父結點。 int n; int p[MAX_N]; // 指向每個結點的父結點   孩子表示法   如上,就是隻記錄每個結點的子結點。 int n; int cnt[MAX_N]; //

原创 【模板】Trie樹(字典樹,單詞查找樹)

int n; // 0爲根節點 char a[MAX_N]; // a[0] = 0; int p[MAX_N][26]; inline void Update(string s) { int now = 0, len = s.si

原创 博客聲明

由於擔心CSDN炸掉,本博客會同步內容到個人的備用博客。(鏈接在此)

原创 【模板】樹轉二叉樹

轉換方法其實就讓每一個結點的第一個子結點做左結點(如果沒有則左結點爲空),右邊的兄弟結點做自己的右結點(如果沒有則右結點爲空)。 int a[MAX_N][MAX_N], cnt[MAX_N]; int lt[MAX_N], rt[MA