原创 ACM_線段樹

線段樹: 自我理解:把一段區間整體操作的數據結構 整體思路: 如圖: 假如單點更新 區間查詢 現在有10個數 這10個數最開始是 1 2 3 4 5 6 7 8 9 10 查詢某個區間的最大值 那麼把這些區間按照

原创 ACM_lca

前言 lca(Least Common Ancestors) : 最近公共祖先, 一般題目的是給你一棵樹(當然也有些題不會直接給你)題目的解法大多會讓你向上找兩個點的最近公共祖先, 比如上圖的4 和 5的公共祖先是2, 9 和

原创 matlab_向量

向量的定義 方式 例子 結果 備註 直接定義 a = [1, 2] a = 1, 2 等間距生成 a = 1 : 2 : 6 a = 1, 3, 5 1.三個參數是起點, 間隔, 終點 2.終點指的是上限, 不一

原创 matlab_格式轉化

PS : ctrl + F查找具體函數 matlab中查看元素類型的函數是class(x) 函數 功能 例子 備註 double 轉化成雙精度 double(x) cellstr 字符數組->字符串 cells

原创 matlab_多項式

定義 方法 例子 備註 直接建立 p = [1, 2, 3] 代表多項式p = x^2 + 2*x + 3 建立以..爲根的多項式 p = poly(root) 得到的多項式p = 0 的解是root 多項式的

原创 matlab_矩陣

矩陣的定義 方法 例子 備註 同向量一樣的定義方法 http://blog.csdn.net/fkjslee/article/details/51810366 全0陣 zeros(N) N*N的全0陣 全0陣

原创 ACM_小知識

直接用法 lower_bound : 返回大於或等於val的第一個元素位置 如[2, 2, 5, 5, 5, 8, 8]中找5返回2, 找4返回2 upper_bound: 返回大於val的第一個元素位置 如[2,

原创 ACM_數位DP

引言 數位DP: 與記數有關的一種動態規劃, 一般題目是 : 求0 ~ n 之間有多少個符合….條件的數, 或者l ~ r 之間有多少個符合條件的數, 第二種一般來說可以轉化到第一種[0, r] - [0, l) = [l, r]

原创 ACM_Tarjan

前言 Tarjan: 適用範圍 計算 1.割頂 2.割邊 3.計算無向圖的雙連通分量 4.計算有向圖的連通分量 tarjan算法 首先介紹幾種概念 DFS森林: 集訓隊的學長以及我們平時討論的DFS森林的意思一般是幾棵D

原创 ACM_dijkstra單源最短路

時間複雜度 O(E + VlogV) E是邊數, V是頂點數 具體算法 dijkstra算法:找單源最短路的算法, 單源指的是起點固定且只有1個, 求到其他點的最短距離, 終點也固定的叫兩點間的最短距離, 兩種情況的複雜度是一樣的

原创 ACM_普通DP

引言 DP: 即dynamic program 動態規劃的意思, 這是一種用之前的狀態推之後的狀態的解決問題的方法, 也可以說用空間換時間 本文將以: 1.動態規劃的狀態, 狀態轉移, 初始化 2.動態規劃的遞推和遞歸 3

原创 大整數模板

轉自:http://blog.csdn.net/hackbuteer1/article/details/6595881 分別使用C++中的運算符重載的方法來實現大數之間的數學運算,包括加法、減法、乘法、除法、n次方、取模、大小比

原创 ACM_歐幾里得(GCD) 擴展歐幾里得(EXGCD)

引言 歐幾里得算法: 又叫輾轉相除法, 用於計算兩個數的最大公約數, 在遇到需要算最大公約數, 以及下面的擴展歐幾里得算法都會用到 本文將以: 1.代碼 2.證明 3.其他 介紹歐幾里得算法 擴展歐幾里得算法 : ax

原创 ACM_種類並查集

簡介 種類並查集: 和基礎並查集有很大一部分相同, 多了一個判斷2個元素是否屬於同一個集團(不是集合, 集合是用來判斷2個元素是否能夠判斷他們屬不屬於同一個集團:有點繞, 舉個例子, 假如知道1和2在不同的集團, 3和4

原创 ACM_基礎並查集

基礎並查集: 用於高效的查找某兩個元素是否屬於同一個集合; 一.普通的查找方式: 初始化所有的元素的父親都是它自己: for(int i = 1; i <= n; i++) pa[i] = i; find函數, 每次向上找它