Time of Update: 2018-12-05
最小頂點覆蓋=最大匹配數,以行為x集合,列為y集合#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
思路很簡單,就是枚舉第一個串求出每種情況是否在以後出現。用KMP進行匹配。可是就是一直wa!!!所以標記為unsolved2011-11-11 23:33:27更新:改了POJ 3450幾個小地方就過了,真的真的很詭異! #include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include
Time of Update: 2018-12-05
奇怪,這題是POJ3080修改而ac的,在POJ3080卻過不了,很詭異的說。。。難道哥的RP低成這樣?!#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#
Time of Update: 2018-12-05
開始SB地暴力,就是枚舉a串,結果SB地TLE。。。後來發現我真的很SB,完全沒有利用好kmp的優美性質,在kmp的主程式中(主程式跟預先處理程式應該分得清吧,雖然他們長得好像),每次尋找的結果就是得出b[i]對應a串中最長的前置長度j,具體是下面程式中標記部分。#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <
Time of Update: 2018-12-05
BFS不解釋#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#
Time of Update: 2018-12-05
轉換為nc進位!複雜度O(len)。#include <stack>#include <map>#include <string>#include <cstdio>#include <cstdlib>#include <string.h>#include <iostream>using namespace std;#define N 16000005#define FRE freopen("a.txt","r",
Time of Update: 2018-12-05
這題跟POJ 3041有點區別,這裡不是一整行一整行地消滅,是某幾個連續的格子一起消滅,因此構圖的時候要注意,從上到下把每行連續的從1開始標號,作為左集合,從左至右把每列連續的從1開始編號,作為右集合,接著就匈牙利演算法求最大匹配數=最小頂點覆蓋數,這裡有點詭異,左右集合各自的編號數最大竟然多於50*50,要把數組開大點#include <map>#include <set>#include <list>#include
Time of Update: 2018-12-05
簡單的KMP,不解釋。#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
有時KMP簡單應用,不解釋。#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
f[i][j][2]表示前i個數以j個數結尾,0是低穀,1是高峰轉移方程:f[i][j][0] = max(f[i][j][0], f[i-j][k][1] + 1); f[i][j][1] = max(f[i][j][1], f[i-j][k][0] + 1);#include <map>#include <set>#include <list>#include <queue>#include <deque&
Time of Update: 2018-12-05
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
這題的前四位是參考別人的思路的,我發現求前幾位通常做法是取對數!後四位不用說,當n>=40時,位元>8。另外,後四位的周期是15000,就這樣打表求出後四位。至於前四位,就要用到Fibonacci 數列的通項公式,我看了百度百科後才知道這個公式==,另外,有趣的是當n無窮大,前一項與後一項之比逼近黃金分割0.618。。。orz。話說回來,an可以表示為t*10^k(t為>1的浮點數),取對數log10(an)= log10(t) + k,其中0<log10(t)
Time of Update: 2018-12-05
不解釋#define N 10int MOD ;struct Mat{ int mat[10][10];};//初始化單位矩陣Mat init(){ Mat E; for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ if(i == j) E.mat[i][i] = 1; else E.mat[i][j] =
Time of Update: 2018-12-05
注意理解好p數組的含義!!!n - p[n]就是一個迴圈節的長度。x = n - p[n],x - (p[n] % x) = 形成兩個迴圈節增加最小字元個數#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include
Time of Update: 2018-12-05
用map離散#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#
Time of Update: 2018-12-05
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
看這個ppt比較清晰 http://wenku.baidu.com/view/03d35d1c59eef8c75fbfb3b4.html#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include
Time of Update: 2018-12-05
這題要注意一點,題中說了You should notice that the roads of two different robots may contain some same point. 就是要注意這個細節http://www.cnblogs.com/ka200812/archive/2011/07/31/2122641.html ,要用一次傳遞閉包floyd找出所有通路#include <map>#include <set>#include
Time of Update: 2018-12-05
From Here哈夫曼樹 1. 哈夫曼樹的基本概念 哈夫曼樹( Huffman )又稱最優二叉樹,是一類帶權路徑長度最短的樹,有著廣泛的應用。 在討論哈夫曼樹之前首先需要弄清楚關於路徑和路徑長度的概念。樹中兩個結點之間的路徑由一個結點到另一結點的分支構成。兩結點之間的路徑長度是路徑上分支的數目。樹的路徑長度是從根結點到每一個結點的路徑長度之和。 設一棵二叉樹有 n 個葉子結點,每個葉子結點擁有一個權值W 1 ,W 2 , ...... W n
Time of Update: 2018-12-05
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include