原创 矩陣的三角分解

一、三角矩陣的分類和性質 正線上三角矩陣:矩陣主對角線下方元素均爲0的矩陣 單位上三角矩陣:矩陣主對角線下方元素均爲0且對角線上元素爲1的矩陣 幾點性質: 設A,BA,BA,B爲三角矩陣,且C=A∗BC=A*BC=A∗B,則ci

原创 網絡流問題

一、最大流 我們有一張圖,要求從源點流向匯點的最大流量(可以有很多條路到達匯點),就是我們的最大流問題。EK算法模板如下 #include<cstdio> #include<cstring> #include<algorithm>

原创 算法分析與設計——NP

一、多項式規約 1、概念及性質 \quad多項式時間歸約:如果問題X和問題Y滿足以下兩條性質,那麼問題X可以在多項式時間歸約到問題Y。 問題X可以通過多項式時間的基本運算步驟轉換爲問題Y; 問題X多項式次調用求解問題Y的算法 記

原创 FFT

\quad學過信號系統的同學都知道,FFT是快速傅里葉變換,能將DFT從O(n2)O(n^2)O(n2)的時間複雜度降爲O(nlogn)O(nlogn)O(nlogn),通常可以用於大整數乘法和多項式乘法。例如下圖的題 給個FF

原创 強連通分量——兩次DFS求解

\quad求一個有向圖強連通分量個數以及每個點所屬連通分量 #include <iostream> #include <vector> #include <cstring> using namespace std; const

原创 求第k大數

\quad求一個序列裏面第k大的數,用partition可以再O(n)O(n)O(n)時間複雜度內求解 /* 對數A[left,right]進行一次partition操作後,主元pivot左側元素都小於它,右側都大於它。設

原创 LCA問題

\quadLCA問題即爲求樹的最低公共祖先。首先給出一種樸素的解法,即先用dfs求出每個節點深度和每個節點的父親節點,再將要求的兩個節點不斷求其父親節點知道二者父親節點相同,該點即爲lca。 #include <iostream>

原创 基礎數論

一、負進制數 \quad將一個整數R進制分開,R爲負數。例如-15的-2進制如下: 程序輸入爲整數N和負整數R,輸出其R進制(-R<36)。大於10的數用A-Z表示。 // 負進制轉換,即R爲負數 #include <iostr

原创 最小生成樹模板

\quad輸入圖點數,邊數,再依次輸入每條邊。輸出爲最小生成樹權重和。 #include <bits/stdc++.h> using namespace std; //最小生成樹啊,會用到並查集 const int maxn =

原创 從我做起 - 抵制1024程序員節-不要再自黑了

\quad今天是10月24日,我的微信朋友圈多了很多所謂的「1024程序員節」的慶祝貼,還多了很多「程序員鼓勵師」,「AV女郎鼓勵程序員」之類的惡搞圖片。讓我一陣一陣噁心,覺得自己應該寫點什麼了。「1024程序員節」是最近兩三年纔

原创 歐拉函數及快速篩歐拉函數

一、歐拉函數 \quad歐拉函數,即ϕ(n)\phi(n)ϕ(n),表示的是小於等於n和n互質的數的個數。 ϕ(1)=1\phi(1)=1ϕ(1)=1 當n是質數的時候,顯然有ϕ(n)=n−1\phi(n)=n-1ϕ(n)=n−

原创 迴文串算法之-manacher

\quad給定一個字符串s="abababc"s="abababc"s="abababc",求這個字符串有多少個迴文串或者最長迴文串是哪個。我用d1[i]d_1[i]d1​[i]是以i爲中心長度爲奇數的迴文串個數,d2[i]d_2

原创 算法分析與設計——分治法

\quad所謂分治法,就是將一個問題分而治之。具體分爲三個步驟 將問題劃分爲若干個子問題 遞歸求解每個子問題,注意寫好遞歸邊界 將若干子問題的解合併成問題的解 問題一、逆序對 \quad給定一個序列,例如a[5]={5,4,8

原创 算法分析與實踐——貪心算法

\quad貪心算法就是在當前狀態小選擇最好的選擇達到局部最優,這種局部最優可能回達到全局最優,也可能不能達到。 問題一、找零錢問題 \quad假設硬幣有5種面值,{1,5,10,25,100}\{1,5,10,25,100\}{1

原创 xshell教育版網盤下載

\quad今天安裝了xshell,本來想着去找破解版,但沒找到,就去官網填信息下載了教育版。網上很多說自己的xshell是破解的能直接使用,我下載安裝後發現根本不行。爲證明自己的xshell是教育版,永久免費,永久有效,我把截圖放