原创 The 16th Zhejiang Provincial Collegiate Programming Contest - K Strings in the Pocket(zoj4110)

題意:兩個串s,t,多少對不同的(l,r),使得翻轉s[l,r]後s等於t。 分析: s不等於t時,找出左右兩端第一個不相等的位置a,b,首先判斷翻轉[a,b]後s是否等於t,接着往左右兩端掃一遍判斷字符是否相等。s等於t時,很容易想到就

原创 csuoj 2316 Joined Vessels

Description John is doing physics practice at school. Today he is studying the law of communicating vessels. This law s

原创 poj 1236 Network of Schools

給n個學校間的有向傳遞關係,求最小的學校數,通過這些學校可以向所有學校傳遞消息,以及求最少需要加多少條有向邊,使得這n個學校間兩兩可傳遞。 強連通分量縮點,縮點後入度爲0點的個數即所需最小數量。記a爲出度爲0的點的個數,b爲入度爲0的點的

原创 poj1226 Substrings

題目大意:給n個字符串,求最長字符串長度,滿足該字符串或其反轉是這n個字符串的子串。 後綴數組。。將這n個字符串反轉後拼接,就是求n個串的最長公共子串啦。 #include<iostream> #include<stdio.h> #in

原创 UVA 760 DNA Sequencing

題目大意:給兩個DNA序列,求這兩個序列的最長公共子串,按字典序輸出,長度N<=300 可以直接用O(n^3)的暴力過。用後綴數組時間複雜度爲O(nlogn)。。 先遍歷height數組求出最大長度,然後再掃一遍height數組,記錄最長

原创 poj3294 Life Forms

題目大意:給n個字符串,求最大長度的字符串,使其在一半以上的字符串中出現過,按字典序輸出 後綴數組。。。二分最大長度,再按sa數組的順序記錄不同最長字符串出現的位置。 代碼:   #include<iostream> #include<

原创 poj3744概率dp

題目大意:n個位置爲A[i]的地方有礦,當前位置爲1,前進一步的概率爲p,兩步的概率爲1-p,問能穿過礦洞的概率,n<=10,A[i]<=1e8 題目分析:dp[i]爲到達位置i的概率,則dp[i]=dp[i-1]*p+dp[i-2]*(

原创 線性規劃

先來篇論文線性規劃與單純形算法   按列存係數矩陣T了無數發後,才知道原來二維數組按行遍歷會比按列遍歷快辣麼多。。   bzoj3112 / luogu P3337 tle代碼(按列遍歷) #include<stdio.h> #incl

原创 codeforce1093E Intersection of Permutations 樹狀數組+分塊

E. Intersection of Permutations time limit per test6 seconds memory limit per test512 megabytes inputstandard input out

原创 poj1741(點分治、樹上點對)

題目大意:一顆樹,問由多少個點對(u,v)滿足dis(u,v)<=k         樹的點分治。。。求先求以重心爲根的樹中滿足dis(u,v)<=k的點對數,減去重心爲根的所有子樹中滿足條件的點對數,即爲路徑經過重心的點對數,加起來即爲

原创 bzoj3261(可持久化字典樹)

可持久化字典樹。。沒注意到可能有n+m個數據情況,re了兩發。   #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include

原创 hdoj6191

題目大意:一棵樹,n個結點,每個結點都有一個值,m次詢問,問以u爲根的子樹結點中與x異或的最大值。           先跑一邊dfs序,子樹問題就轉化成了區間問題,這樣最大異或值就可通過字典樹來求了,但是與我們做過的最大異或值那道題的區

原创 hdoj 3046

題目大意:給一個網格,1代表🐏,2代表🐺,0表示空地,求用最小數量的圍牆阻擋🐺,使其不能傷害🐏。 最小割。。對每個點和其上下左右的點建立容量爲1的邊,增加超級源結點和匯結點,跑下最大流。   #include<iostream> #in

原创 bzoj1001

題目大意:有n*m個網格點,座標爲(i,j)的點與(i+1,j),(i,j+1),(i+1,j+1zu)間有權值w的無向邊,表示該邊可通過兔子  的最大數量,左上和右下分別爲兔子起點和終點。一頭狼阻只能擋一隻兔子,求要阻擋兔子到達終點的最

原创 zoj3963

思路分析:若前面的維護的數已按小到大排好序,每次找到左邊第一個小於等於素該元的數插入,如果標記插入次數>=2,                   則從中刪除。用set或權值線段樹維護即可。 !!!!nlog(n)的算法TLE了很多發,加