原创 hdu 5481 Desiderium

題意真難讀懂。Orz 一個含有n個區間的集合,從該集合中等概率地選取子集,求所有子集中的所有區間的構成的並集長度的和。 第二個樣例解釋: 集合中含有2個區間:一個是[0,2],編號爲1,一個是[1,3],編號爲2。 集合的子集有4個:

原创 poj 3680 Intervals (離散化+費用流)

n條線段,帶有權值。 選擇其中若干條,使得權值最大且每個端點覆蓋次數都不超過K次。 建圖: 1、將輸入的頂點離散化。設總共不同的頂點個數爲n。 2、將頂點i到i+1連一條容量爲K,費用爲0的邊。 3、新建源點0和匯點n+1,頂點0到1、

原创 poj 3254 Corn Fields (狀壓DP)

題目大意: N*M的農場, 有的格子可以放牛,有的不行。在這塊地方放牛,相鄰的格子不能有牛。求方案數。 N、M都比較小(<13),那麼可以用1個2進制位表示一行中的每一個格子的狀態,0表示不放牛,1表示放牛,一行中的所有二進制位構

原创 hdu 5492 Find a path (DP)

題目大意:給N*M(1<=N,M<=30)的矩陣,矩陣的每一格有一個非負權值(<=30) 從(1,1)出發,每次只能向右或向下移動,到達(n,m)時,經過的格子的權值形成序列A, 求(N+M−1)∑N+M−1i=1(Ai−Aavg)2 的

原创 hdu 5451 Best Solver (特徵方程求通項+廣義Fibonacci數列找循環節)

題目大意:y=(5+26√)1+2x。給出x和M,求這個式子的整數部分對M取模的值 惡補了一下線性代數。。。 記λ1=5+2√6,λ2=5-2√6。則λ1λ2=1,λ1+λ2=10 則λ1、λ2可以看作特徵方程x^2-10x+1=0的

原创 HDU 5459 Jesus Is Here(遞推)

題目大意: 字符串s1=c,s2=ff s[n]=s[n-2]+s[n-1](n>=3) 給出n,求s[n]中任意兩個cff之間距離之和。 分析: 設所求爲f[n]。 則必然有f[n]=f[n-2]+f[n-1]+a[n]。 關鍵就是求

原创 hiho 1228 Mission Impossible 6(模擬)

題目大意:就是給一段按鍵操作,進行模擬,輸出最終字符串。各種操作說明見原題點擊打開鏈接 個人覺得用vector來模擬還是比較方便的。 主要注意一下指針pos的位置就好了,pos是指向當前要插入字符的位置,也即相當於光標的右邊。對於D操作

原创 子序列個數(DP)

子序列的定義:對於一個序列a=a[1],a[2],......a[n]。則非空序列a'=a[p1],a[p2]......a[pm]爲a的一個子序列,其中1<=p1<p2<.....<pm<=n。 例如4,14,2,3和14,1,2,3

原创 uvalive 3026 Period (前綴最短循環節)

給一個長度爲n的字符串S,求其每一個前綴的最短循環節(若存在) 對於串S,利用KMP算法求一下Next數組 根據next數組的含義,設當前前綴長度爲i,若這i個字符組成周期串,則i-next[i]恰好爲其週期串的最長長度。 #inclu

原创 hdu 5464 Clarke and problem(DP)

題目大意:給n個數,問選擇其中若干個數使得和能夠被p整除的方案數。 設dp[i][j]表示前i個數選取若干個,和被p除餘j的方案數。 那麼dp[i][j]=dp[i-1][j]+dp[i-1][j-a[i]%p]  (j=0~p-1)

原创 hdu 5452 Minimum Cut (LCA)

題目大意:給一個n個點,m條邊的無環、無重邊的無向圖,並且給出圖中的一棵生成樹,求最小割邊集大小,使得邊集中恰好包含生成樹中的一條邊。 考慮生成樹中的每一個結點,將其子樹與其父節點分離需要去掉其父邊以及其子樹中的結點與其他子樹相連的邊,

原创 poj 1185 炮兵陣地(狀壓DP)

和上一題有點類似。不過對於當前的第i行狀態,除了牽涉到第i-1行的狀態外,還和第i-2行的狀態有關。 考慮枚舉前兩行的狀態,來進行狀態轉移: 設dp[i][s][s1]表示第i行狀態爲s、第i-1行狀態爲s1時,能安置最多炮兵

原创 hiho 1233 Boxes(狀態壓縮+BFS)

題目大意:給n(n<8)個數放置在n個位置,小的數可以移動至大的數上面,反之不行。輸出使得其有序最少需要的移動次數。 最多隻有7個數,首先可以把輸入的數離散化處理一下。 對於每一個數,考慮用三位二進制數來表示其位置。那麼對於n個數,有2

原创 hdu 5296 Annoying problem (LCA)

題目大意: 給一棵帶權樹,和一個集合S,初始爲空。現有兩種操作: 1、選擇某個頂點加入S 2、將S中某個頂點去掉。 問:每次操作後,使得集合S中的點聯通的最小邊權和是多少。 一、思考問題的本質是什麼? 要使邊權和最小,也即每次增加的邊

原创 hdu 5289 Assignment(RMQ)

給一個數列,求滿足區間中任意兩個數的差值均小於K的,這樣的區間個數。 RMQ預處理區間最大、最小值。 然後從小到大枚舉區間右端點i,對於每一個右端點,考慮其左端點最遠(最小值)能到哪裏,設爲L[i]。則以該右端點爲右端點的且滿足條件的區