原创 倍增算法的另一種解法

網上一搜索倍增算法,基本就是羅穗騫同學的介紹。這同學高中時期就研究這麼深入,讓我這研究生畢業的人汗顏,慢慢爬坑吧。不過說實在的,這代碼寫的實在看着有點費勁。網上又有人整理了下。不過我看的還是一頭霧水,希望有明白人能說明一下。要想了解倍增算

原创 linux不知道的一些事兒

關於PRId64 Linux裏,int64_t(64位整數)經常被用來表示時間戳,因爲int32_t只能表示到格林威治時間2038年01月19日03時14分07秒,而64位整數表示的時間要長很多。但int64_t類型在32位系統中是lo

原创 設計模式筆記-builder 模式

首先貼出一篇不錯的關於builder模式的博文:點擊打開鏈接 文中舉的第一個反例的博文在這裏:點擊打開鏈接 修改後的UML圖如下: 說實在的,這個模式我理解不是很深入,因爲在實踐中沒用過,看網上的介紹也是不知所以然,還是那句話,理論和實

原创 manacher算法求最長迴文子串(Longest Palindromic Substring)

經典的快速求最長迴文子串的算法是manacher算法(俗稱“馬拉車”),時間複雜度o(n),感覺能在o(n)時間內解決問題的算法都是神啊。不過這個算法用處比較單一,思想也不具有普遍性。迴文這個東西,本來用的就不多,看看理解一下就好。 推兩

原创 設計模式筆記-xx工廠模式

一, 簡單工廠模式 主要特點是需要在工廠類中用多個case分支做判斷,根據傳遞進來的參數創造相應的產品。當增加新的產品時,當然也得修改工廠類,就是在其中 添加case分支。在平時開發的小項目裏,由於對象類型單一、個數基本確定,所以基本採用

原创 設計模式筆記-Prototype模式

Prototype模式-原形模式,就是自我複製,一個clone函數的事。先把UML圖貼出來。 不同的語言實現可能不同,在C++中,一般clone的實現是: Prototype* ConcretPrototype::Clone() co

原创 動態規劃法解0-1揹包問題

揹包問題 0-1揹包: 有N件物品和一個重量爲M的揹包。(每種物品均只有一件)第i件物品的重量是w[i],價值是p[i]。求解將哪些物品裝入揹包可使價值總和最大。 完全揹包: 有N種物品和一個重量爲M的揹包,每種物品都有無限件

原创 由is_base_of看C++中的SFINAE

SFINAE, 全稱爲"匹配失敗並不是一種錯誤(Substitution Failure Is Not An Error). 這個源碼看着還是有點費勁的!先舉個例子。 template<typename T, bool C = true

原创 樹形DP解 POJ3342-Party at Hali-Bula

參考:http://blog.csdn.net/sdjzping/article/details/13131611 第一次接觸樹形DP的題目,這種題解題思路還挺固定的,深度優先搜索+動態規劃。這點比較好理解,dp[i][j]保存節點i在狀

原创 C++時間類型詳解

Unix時間戳(Unix timestamp),定義爲從格林威治時間,1970年01月01日00時00分00秒起至現在的總秒數。 目前相當一部分操作系統使用32位二進制數字表示時間。此類系統的Unix時間戳最多可以使用到格林威治時間

原创 設計模式筆記-單例模式

單例模式在系統開發時很常見,一個系統中可能會有多個單例模式的運用!它比全局變量的好處?1.能控制生成時間,保證初始化順序?2. 容易保證線程安全(全局變量需要多線程client單獨控制併發,單例在類實現中已經做到,無需client再處理)

原创 狀態壓縮DP解POJ3254-Corn Fields

本文內容轉自:http://blog.csdn.net/harrypoirot/article/details/23163485?utm_source=tuicool&utm_medium=referral 對狀態壓縮DP有了初步的認識,

原创 Double Dispatch and visitor patten-雙重分發與訪問者模式

如果你研究過visitor pattern,很可能會涉及到一個Double Dispatch的概念,這裏我們就叫它雙重分發吧,雙重分發是一種思想,而訪問者模式則是一種具體實現。本文會盡量以一種通俗的語言來描述這些概念(本文以C++爲例)。

原创 最長公共子序列(LCS)和最長公共子串(LCS)

最長公共子序列(Longest Common Subsequence)和最長公共子串( Longest Common Substring),雖然它們都簡稱爲LCS,但含義不同,前者是可以不連續的,而後者要求是一個連續的字符串。比如: X

原创 C++線程局部存儲(TLS)

基本類型(如(unsigned) int,long, char,指針,c類型的結構體等 )可以採用用 __thread修飾符來定義線程局部變量. 示例如下: __thread int i; extern __thread struct