原创 UVaLive 6697 (DP)

題意:給出一個長字符串,再給一個短字符串,進行匹配,如果第i個恰好匹配,則 +8,;如果不匹配,可以給長或短字符串添加-,先後匹配,這樣-3,連續的長字符串添加-,需要減去一個4;也可不給添加-,則-5。 思路:dp[i][j][k];

原创 HDU 4455 Substrings

#include <cstdio> #include <cstring> #include <queue> #include <iostream> #include <map> #include <algorithm> #include

原创 UVALive 6859 (凸包)

將每個點分成上下左右四個點加入圖中,求出凸包,由於只有長度爲sqrt(2.0)和1的邊,所以按照橫座標差值和縱座標差值處理即可,代碼如下: #include <iostream> #include <cstdio> #include <c

原创 HDU 3690 bfs+哈希

**可以想象任意一個最短步數形成的路徑任意交換兩個選擇的向量形成的路徑是不一樣的,那麼一定能找到在路徑中離 l:(sx,sy)-> (tx,ty)直線最近的路徑,所以只要找到這個路徑即可,可以將所有背離起點終點和離

原创 UVaLive 7365

#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <cmath> #inclu

原创 HDU 4586 Play the Dice 簡單思考

題意:給你N個骰子,1-n上標有各自的數,然後擲骰子一次,得到朝上數字數量的錢;再給你m,然後m個數表示,當該數朝上時,你可以得到這麼多錢,並且可以繼續擲骰子。 問你你能得到的錢的期望。 思路:若骰子上面的數字和爲sum,則擲第一次:su

原创 POJ 3172 (dfs寫0-1揹包)

#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <cmath> using

原创 UVa 1629 Cake Slicing (切蛋糕)

有一個n行m列的網格蛋糕上有一些櫻桃,要求延網格線切割,並且每塊蛋糕上有一個櫻桃,問最小的切割長度。 #include <iostream> #include <cstdio> #include <cstring> #include <s

原创 UVa 11178 Morley's Theorem

還是第一次這麼認真全神貫注的手打模板,真心費精神。 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorith

原创 HDU 3688 並查集

題意:在一個n*m的矩陣裏,每個格子都有一個燈,每個燈可以調節燈光大小,不超過所給的數字。給出每個燈的燈光大小,現要求把所有燈光調到同一個大小,小於這個大小的燈就關閉。要求每一個格子必須開着燈或者必須被東西方向和南北方向的燈同時照到。問這

原创 HDU 3689 (KMP+DP || 暴力+dp)

由於匹配串比較小,也可暴力 dp[i][j]表示輸入第i個字符模式串匹配到第j個字符的概率。 KMP+DP如下: #include <iostream> #include <cstdio> #include <cstring> #in

原创 HDU 3367 Pseudoforest

題意:給你n,m。m條邊,找出一顆最多帶一個環的權值最大的子樹。 思路:模仿生成樹的都建方法,用並查集一條邊一條邊的連起來,用vis[]數組判一下,這棵樹是否帶環即可。代碼如下: #include <iostream> #include

原创 HDU 3368 Reversi (簡單dfs)

題意:跟小時候在電視機上玩過的黑白棋一模一樣,於是題也沒讀便開始做。給你一副棋盤,讓你走一步黑棋,儘可能多的吃掉白棋,求吃掉的個數。 思路:一開始想從D開始遞歸,後來一想不對啊,比如,走的那一步黑棋,可以從多個方向上吃掉白棋,那麼從D開始

原创 UVa 1330 LA 3029

藍書第一章的題目,神奇的解法:詳細見P50,City Game LA3029, UVa 1330 #include <iostream> #include <cstdio> #include <cstring> #include <str