原创 倍增法與LCA

倍增法 和二分搜索相似,搜索的範圍爲1/1 1/2 1/4 1/8 1/16 1/32. 倍增法的每一步範圍爲 1 2 4 8 16 32 。 用數學可以證明:任意一個數可以由2的指數和構成(即2進製表示) 所以用倍增發可

原创 機器學習與神經網絡概念學習

神經網絡是進行機器學習的方式之一,也是目前使用最廣泛的方式。 機器學習的目的是根據已有的數據來預測未知的結果。 通過已有的數據建立模型,在模型下進行預測,模型的可靠性決定預測結果的準確率。 如何建立更優的模型,是機器學習主要關注的

原创 C# 實現包裝tcp/ip 爲websocket 服務器傳輸圖片

C# 實現包裝tcp/ip 爲websocket 服務器傳輸圖片 介紹 要求:web客戶端,c#服務器 實現服務器單向給客戶端傳輸圖片。 網上找了一下,可以用websocketSharp實現,但是引入第三方庫需要架構組審批之類

原创 三分搜索

今天學習了三分搜索。 三分搜索的思路爲:把一段範圍分成三段(1=1/3+1/3+1/3) 左範圍l,右範圍r; 左中點 m = l+(r-l)/3; 右中點 mr = r - (r - l ) /3; 比較 m , mr

原创 矩陣快速冪

矩陣冪可以用來解決斐波那契問題,圖的路徑條數問題。在計算矩陣冪的過程中,如果用樸素的列與行枚舉求和:例如——複雜度是O(N)。所以引進了矩陣快速冪來計算。首先來看快速冪——快速冪就是把指數再化成  底數加指數  的形式,例如:如何拆分呢?

原创 初學雙端隊列(deque)

雙端隊列(deque)是C++標準模板庫(STL)中的容器。支持隨機訪問和存取,支持下標訪問。 與vector類似,但有不同: vector是單向開口的容器,只支持在末尾添加操作; deque是雙向開口的容器,可以在首尾操作。

原创 概率dp

爲了求解問題的期望值,我們需要用到概率公式求解; 但當情況複雜時,無法直接計算得到; 所有引入dp的概念來計算概率: 即通過前一步概率得到下一步概率,把計算結果的總概率分解成計算部分的概率。 用 dp 來dfs時,如果是從初

原创 我對數位dp的理解

dp即動態規劃,一個很神奇的詞,與其說是算法,不如認爲是一種概念。 (有的時候你做完題,甚至都不知道自己用的是dp…) 我覺得吧,dp,就是把全局的最優解,拆分成部分最優解。 (也可能不是最優解,但與全局最優解有關) 一種牽

原创 判斷素數(Miller-Rabin、篩選)與 求素數因子(Pollard rho、試除)

Miller-Rabin算法: 用來確定一個指定的數N是否是素數。 費馬小定理: 如果p是素數,那麼p滿足:(對任意a>=1) 如果我們指定一個a,如果n不滿足費馬定理,那麼n不是素數(即合數)。(逆否) 但,在基數a下,如

原创 迷之最長公共子序列(LCS)

最長公共子序列: 兩個序列按順序匹配相同的元素,所構成的新序列。(元素間可以不連續) 舉例: a----b----e----d----c----f----g 丨 丨 丨 丨 ca

原创 數獨問題&模板

/* DLX解決9*9的數獨問題,轉化爲729*324的精確覆蓋問題 行: 一共9 * 9 * 9 == 729行。一共9 * 9小格,每一格有9種可能性(1 - 9),每一種可能都對應着一行。 列: 一共(9 + 9 + 9

原创 計算幾何之凸包

凸包:每個角<180°的多邊形 問題: 給定n個點的座標,求能覆蓋n個點的最小多邊形 Graham-scan 算法: 極角排序 初始: 1. 找到一個起始點O, 取y座標最小的點,即圖最下方的點 2. 以O爲準值,極角

原创 卡特蘭數

卡特蘭數 排列組合不重複的個數 這次碰到是括號合法匹配的問題 An=C(2n,n)/(n+1); #define LL long long LL factorial(LL number) { if(number<=1)

原创 最大流模板poj3281

#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <cmath> #include <vector> usin

原创 博弈(尼姆,威佐夫、巴什)

巴什博弈 一堆n個物品,兩個人輪流從這堆物品中取物, 規定每次至少取一個,最多取m個。最後取光者得勝。 先手必勝爲1 有兩種情況: n<=m 先手一次取完 必勝1 n>m 先手一次取不完 剩餘 <= m 對方一次取完 先手輸