原创 CF 10D LCIS

最長公共遞增子序列。o(n*m)做法。只在cf上過了。。。poj,zoj都wa出翔了。。。記錄路徑要開二維數組否則會wa。 #include <cstdio> #include <algorithm> #include <cstring>

原创 湘潭大學oj 1191 Hard Wuxing

矩陣乘法求解。非常卡時間。因爲轉移矩陣固定,直接處理出快速冪中所有轉移矩陣的冪。還有因爲沒用longlongRE了一發 #include <cstdio> #include <algorithm> #include <cstring> #

原创 HDU 4731 Minimum palindrome

學會了打表找規律。m >= 3時abc循環最小,m=2時打表找規律即可。 ps:m>=3時,n%3,即多出來的數加在後面,加前面會令迴文從3增加到4或5 #include <cstdio> using namespace std; int

原创 POJ 1947 Rebuilding Roads

樹形dp。dp[i][j],表示以第i個節點爲根節點,形成含有j個節點的子樹最少去掉的邊。最後計算答案時除根節點外,其餘節點的答案都要+1,因爲與父節點有條邊。狀態由下一層轉移過來時dp[i][j] = min(dp[i][j], dp[

原创 SPOJ 2815. Increasing Subsequences

dp,開50棵線段樹,每棵存到當前位置連續長爲k的序列總數。注意代碼中有一需要注意的地方,即當前數爲最小數時,前一棵樹的總和必然爲0,不能通過求p - 1的總和數來求,此時p - 1 爲-1會導致出錯。另外,沒離散化1e5超時,離散化1e

原创 HDU 4734 F(x)

數位dp,寫的非常挫。ul爲超出部分,fu爲缺少部分。當前數位超出或缺少部分大於一定數值可直接返回 #include <cstdio> #include <algorithm> #include <cstring> #include <c

原创 HDU 1561 The more, The Better

樹形dp。卡了下。一開始是在一條鏈上做dp,當1爲根節點,2,3都是其子節點時,我的做法無法同時選1,2,3。dp第一位代表節點,第二維代表用掉數目,由下一層節點遞歸上來。ps:改掉了波神吐槽的指針。。。 #include <cstdio

原创 POJ 3140 Contestants Division

樹形dp,水。 求將一棵節點有權值的樹分成兩塊,兩塊總權值差最小值。 ps:注意本題要用longlong,第一次應該wa在這裏,然後換了種寫法,導致tot和mv未初始化,再wa一發。還是將tot和mv的初始化放進init中好,這類題目初始

原创 安大oj 673 聰明的輸入法

字典樹模板題,表示很簡單,只是看不懂題。。。 #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> using namespace std; t

原创 HDU 2896 病毒侵襲

AC自動機模板題。重新學習,熟悉下。 #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<ios

原创 POJ 2185 Milking Grid

利用next數組求最小重複覆蓋字串長度,即x = len - next[len]。先求每行最小長度再求每行最小公倍數,縱橫相乘可過。 PS:以上是錯誤思路,僅爲理解next數組。目測這篇文章是正解:http://blog.sina.com

原创 SPOJ 3408 DNA Sequences

有點卡,一直糾結於dp數組轉移相關sum數組轉移的問題,看了下別人的題解發現,其實獨立開來就行了。求最長公共子序列,且每一連續子段的長度不小於k。用sum數組記錄前面有多少連續的序列。sum[i][j] 只能由sum[i - 1][j -

原创 合工大oj 1307 散步

13年安徽省賽題目。bfs處理出所有點到n,m點的最短距離,再dfs一次即可。 ps:在bfs時,加入v數組若i,j點已經在棧中則不必入棧,更新距離即可。避免重複入棧導致超時。 #include <cstdio> #include <io

原创 ustc 1233 Gift

一開始想先選出送出的物品,再乘以臨界點的種類。但是求組合數超時。先枚舉臨界點,再乘以所有可能(2的冪)即可。 #include <cstdio> #include <algorithm> #include <cstring> #inclu

原创 CF 402D Upgrading Array

暴力搞過。。。處理出從1 到 i的公約數。從右往左開始判斷,如果公約數的值小於零直接約掉。然後計算總和即可。注意處理素數大於sqrt(1e9)的情況。當給出素數中存在大於素數表最大值的素數時,加入素數表。v記錄是否爲壞素數。當除以約數結束