原创 【PAT Advanced Level】1019. General Palindromic Number (20)

這題就是簡單的模擬題,爲了確保不越界,我使用了long long 要注意加入0的判斷! #include <iostream> #include <vector> #include <algorithm> using namespace

原创 【PAT Advanced Level】1014. Waiting in Line (30)

簡單模擬題,注意讀懂題意就行 #include <iostream> #include <queue> using namespace std; #define CUSTOMER_MAX 1000+1 #define INF 0x6f

原创 【PAT Advanced Level】1015. Reversible Primes (20)

轉換進制&&逆序可以在一起進行,有一點技巧,不要用十進制數來表示低進制,容易溢出。 #include <iostream> #include <vector> using namespace std; bool isPrime(int

原创 【PAT Advanced Level】1013. Battle Over Cities (25)

這題給定了一個圖,我用DFS的思想,來求出在圖中去掉某個點後還剩幾個相互獨立的區域(連通子圖)。 在DFS中,每遇到一個未訪問的點,則對他進行深搜,把它能訪問到的所有點標記爲已訪問。一共進行了多少次這樣的搜索, 就是我們要求的獨立區域的個

原创 trivial、standard layout和POD的比較

POD的含義可以從兩個顯著的特性說明: 它支持靜態初始化,而且在C++中編譯POD類型會和C中編譯的struct類型得到相同的內存佈局正是因爲這個,這個定義被劃分爲兩個不同的概念:trivial 類型和standard-layout

原创 codeforces好題記錄——4D

題目見http://codeforces.com/problemset/problem/4/D 這道題是LIS(longgest increasing string)的一個變種版本。對於LIS問題,我倒是很快能寫出答案,但是如果加上一些限

原创 STL的榨汁機——type traits

STL中關於類型提取器的詳細介紹,我再此就不贅述了,只是記下其中關鍵部分,供我以後學習之用。 nested type,這種方法能獲得一個類的associated type,如下代碼中,想要獲得myIter類的T類型,可以在此類中nest

原创 左旋字符串——編程珠璣和STL所想到的

在看編程珠璣時候有這麼一題: 將一個長爲n的字符串左旋i位,例如abcdefg左旋3位得到:defgabc 在書上提到了兩種解法,分別如下,習題中有這麼一個問題:i和n的最大公約數如何才能被程序用到?一時間沒有思路,看看STL是怎麼實現

原创 【PAT Advanced Level】1033. To Fill or Not to Fill (25)

網上策略說的很詳細了,利用貪心算法: 假設我們現在在A點,A能到達的最遠距離之內有B, C, D三個點: 1. 如果B, C, D中有比A小的,則找到離A最近的,A加的油剛好夠到這個點; 2. 如果沒有比A小的,A加滿油,到B\C\D中最

原创 算法導論22.4-3 判斷無向圖是否包含迴路

給出一個算法,用它來確定一個給定的無向圖G=(V,E)中是否包含一個迴路。所給出的算法的運行時間爲O(V),這一時間獨立於|E| 解答:我們都知道對於一個無向圖而言,如果它能表示成一棵樹,那麼它一定沒有迴路,並且有|E|=|V|-1,如果

原创 算法導論22.4-5 構造拓撲排序

題目要求用非DFS得方法構造拓撲排序。 找出入度爲0的節點,刪除該點並刪除該點所有的出邊。 刪除的順序就是拓撲排序的順序。要求複雜度O(V + E)。  方案: 1. 遍歷鄰接表一遍,統計每個元素的入度。(O(E)) 2. 找出一個入度爲

原创 trivial和non-trivial在構造析構中的作用

triavial通常是指沒有意義,在構造類對象的時候,有時候編譯器會自動生成構造函數(拷貝構造以及=號運算符號),有時候這些函數對於用戶來說是沒有意義的(尤其是在類裏邊有動態分配的指針時)。但在以下4種情況下,缺省的構造函數是有意義的:1

原创 codeforces好題記錄——3D

題目見http://codeforces.com/problemset/problem/3/D 給定一個字符串,裏面有'?'和'(', ')'。我們需要替換‘?’爲左括號或者右括號,使得整個串的左右括號正好匹配。 如果單純是上面的要求,就

原创 【PAT Advanced Level】1030. Travel Plan (30)

先用Djikstra算出最短路徑,紀錄下相同的最短路徑,再回溯計算花費最少的路徑。 其實不用回溯,直接在比較最短路徑的時候比較花費最少就可以了。 #include <iostream> #include <vector> #includ

原创 【PAT Advanced Level】1023. Have Fun with Numbers (20)

#include<iostream> #include<vector> #include<set> #include<map> #include<queue> #include<algorithm> #includ