原创 BZOJ 1692 [Usaco2007 Dec]隊列變換 後綴數組

題目大意:給出一個包含大寫字母的長度爲n的字符串,每次可以從字符串的首或尾取出一個字符放在新串的末尾,輸出字典序最小的新串 當首尾相同時,找第一個不同的位置誰小取誰,然而複雜度是O(n)的。 可以將正反串中間用符號隔開連在一起,求

原创 BZOJ 4399 魔法少女LJJ 線段樹合併

題目大意:第一行有一個正整數m,表示操作個數。 接下來m行,每行先給出1個正整數c。 若c=1,之後一個正整數x,表示新建一個權值爲x的節點,並且節點編號爲n+1(當前有n個節點)。 若c=2,之後兩個正整數a,b,表示在a

原创 BZOJ 3779 重組病毒 LCT維護子樹信息

題目大意:給定一棵樹,要求支持:將某個點到根的路徑染色;換根後將原來的根到現在的根的路徑染色;求某個點的子樹到根的平均顏色段數 比較麻煩的LCT維護子樹信息 變量名是照neither_nor神犇抄的..意義相同,鏈接 因爲要計算

原创 BZOJ 4530 [Bjoi2014]大融合 LCT維護子樹信息

題目大意:給出n個點,定義一條邊的負載就是它所在的當前能夠聯通的樹上路過它的簡單路徑的數量,要求支持兩個操作:加邊,詢問邊的負載。保證加邊不會出現環。 暴力用LCT維護子樹信息。 LCT維護子樹信息(子樹信息LCT) LCT維護邊

原创 BZOJ 2738 矩陣乘法 整體二分

題目大意:給出一個N*N的矩陣,每次詢問一個子矩形的第K小數。 整體二分即在二分答案的同時把詢問分到兩個集合中再分別二分直到每個詢問出解。 相當於把多個詢問一起二分 如何判斷一個數x是不是k小呢 把矩陣中的小於等於x的數設爲1,

原创 BZOJ 2648 SJY擺棋子 K-D Tree

題目大意:給出平面上一些點,要求支持插入點,查詢離某個點的最近點的曼哈頓距離。 KDTree裸題 https://zhuanlan.zhihu.com/p/22557068 #include <cstdio> #include

原创 BZOJ 3669 [Noi2014]魔法森林 LCT

題目大意:給出一個n 個點m 條邊的無向圖,每條邊上有兩個權值ai ,bi ,要求選擇一些邊使1,n 連通,問這些邊中兩個權值分別取最大後求和最小是多少 考試的時候只想到按a排序後二分b… 考慮只有一種權值的情況就是做一遍類似最小

原创 BZOJ 4276 [ONTAK2015]Bajtman i Okrągły Robin 費用流 線段樹優化建圖

題目大意:n(≤5000)個區間(l,r≤5000),每個區間只能選其中的一個點得到vi的價值,每個點最多選1次,求最大價值 容易想到費用流。 暴力建圖n2 條邊直接爆炸(不一定 區間加邊,可以用線段樹優化建圖。 線段樹上的每個結

原创 BZOJ 3622 已經沒有什麼好害怕的了 DP 容斥原理

題目大意:給出長度爲n的a,b兩個序列,元素互不相同。求有多少種匹配滿足ai>bi 比ai<bi 多m對。 將問題轉化一下,即求有多少種匹配其中ai>bi 恰好爲n+m2 ,其餘均爲ai<bi 。 若設狀態爲fi,j 表示a序列

原创 BZOJ 3238 [Ahoi2013]差異 後綴自動機

題目大意: len(Ti)+len(Tj)枚舉一下就好,主要是如何算sigma{lcp(Ti,Tj)} 將原串反過來建後綴自動機,兩個節點的lca即最長子串就是這兩個節點代表的串的lcp 於是枚舉、DP一下即可 #includ

原创 BZOJ 2555 SubString LCT 後綴自動機

題目大意:給出一個初始字符串,要求支持,在末尾添加一段字符串,查詢一個串出現了幾次,強制在線。 構造後綴自動機,一個串出現次數等於代表這個串的狀態的right集合大小。 然而強制在線,right集合在添加之後會發生改變。 考慮添

原创 BZOJ 1085 [SCOI2005]騎士精神 A*搜索

題目大意:在一個5×5的棋盤上有12個白色的騎士和12個黑色的騎士, 且有一個空位。在任何時候一個騎士都能按照騎士的走法(它可以走到和它橫座標相差爲1,縱座標相差爲2或者橫座標相差爲2,縱座標相差爲1的格子)移動到空位上。 給定一

原创 BZOJ 4756 [Usaco2017 Jan]Promotion Counting 線段樹合併

題目大意:給出一棵有根樹,每個點有一個權值,問對於每一個點的子樹中比這個點大的點的個數。 首先權值很大需要離散化。(2017-7-13UPD:不用離散化也可反正也是動態開點 對於每一個點建一個權值線段樹。遍歷每一棵子樹,然後將子

原创 BZOJ 1877 [SDOI2009]晨跑 費用流

題目大意:給出一張n個點m條單向邊的圖,經過一條邊可以獲得一個邊權c,每個點只能走一次(1、n除外),每條邊也只能走一次。現多次從1出發到達n,問最大化經過點數最小化權值和。 很明顯最小費用最大流跑一跑。 對於點的限制把每個點(1

原创 BZOJ 1457 棋盤遊戲 SG函數

題目大意:有一個100 * 100的棋盤,從0開始編號。棋盤上有N個Queen。兩個玩家輪流選擇其中一個Queen,將它跳到(Xi – k, Yi)或(Xi, Yi - k)或(Xi – k, Yi - k), 其中k > 0。一