原创 【分塊】UVA 12003 Array Transformer 水題
點擊打開鏈接 比較水的分快,還不會爆LL #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <string> #in
原创 【Splay】 HDU 1754 I Hate It
點擊打開鏈接 區間最值模板 需要在兩端設置兩個結點( 查詢 [ l, r ] 時需 將 l-1 轉到根結點,r+1轉到l-1的兒子結點 這時 r+1的左兒子就是答案 #include <stdio.h> #include <stri
原创 【數據結構】 CF 547B Mike and Feet
點擊打開鏈接 長度爲n的一個數列 定義 一個區間內的 最小的值爲 這個區間的strength 求長度爲 1-n 的區間 最大的strength 先求出每個位置左邊/右邊 的比它小的值的位置 這樣在 L+1 R-1 區間內這個位置是最小
原创 【主席樹】 ZOJ 2112 Dynamic Rankings 區間第k小值
點擊打開鏈接 題解:Empress #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <cstring> #include
原创 【線段樹】 HDU 5316 Magician
點擊打開鏈接 題意:求一個區間內的最大的子序列的和:要求必須下標奇偶奇偶。。不能出現奇奇 偶偶這樣 維護好 開始爲奇結束爲偶 開始爲奇結束爲奇 開始爲偶結束爲偶 開始爲偶結束爲奇 #include <cstdio> #include <
原创 【後綴數組】 POJ 3882 Stammering Aliens 可重疊出現k次字符串
點擊打開鏈接 題意:m表示至少出現m次的字符串,要求最長,並輸出最後一次的子串的位置 height [ i ] 表示 sa [ i ] 與 sa [ i -1 ] 的公共長度 二分最長串的長度 如果找到連續的k-1個 height 大於等
原创 【主席樹】 HDU 4417 Super Mario 區間內小於某值的個數
點擊打開鏈接 查詢時對於高度H二分hash值得到k值,查詢1-k區間內的個數 #include <cstdio> #include <cstring> #include <cstdlib> #include <string> #incl
原创 【染色】 HDU 5313 Bipartite Graph
點擊打開鏈接 給出一個二分圖,求添加最多的邊數 變成一個完全二分圖 若兩個點集個數越接近,邊的數量越大 染色聯通塊得到k組兩個點集的數量 然後用bitset搞= = #include <cstdio> #include <cstring>
原创 【網絡流+最短路】 HDU 5294 Tricks Device
點擊打開鏈接 最短路求出到每個點的最小值以及邊數 枚舉下能到達終點的點的邊數num[i] 取個最小值 +1 然後減去m就是第二個輸出的數 對於原來的圖滿足最短路的邊建上一條邊跑網絡流 就得到最小割= = 因爲有重邊所以網絡流的邊的容量爲
原创 【SBT】 POJ 3481 Double Queue
點擊打開鏈接 1 表示插入 點 2表示求最大值的點標 並刪除 3表示求最小值的點標 並刪除 0表示結束 模板題。增加了一個val 表示爲輸出的值 #include <stdio.h> #include <string.h> #includ
原创 【樹狀數組】 HDU 5372 Segment Game
點擊打開鏈接 題意: 兩種操作 :a,b a=0:插入一個區間 長度爲num 區間範圍爲[b,b+num] ( num表示爲 這條區間的編號 第一個插入的 num=1,第二個插入的 num = 2 a=1:刪除第b個區間 插入一個線段
原创 【線段樹】 HDU 5289 Assignment
點擊打開鏈接 對於第i個數,最多有 i個以i爲R端的區間可以選 前面維護好一個L值 表示在L之前都不滿足條件的位置 然後對於L-R二分 #include <cstdio> #include <cstring> #include <cstd
原创 【SPLAY】 [HNOI2002] 營業額統計 模板
點擊打開鏈接 模板 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <string> #include <iost
原创 【瞎搞】 HDU 5312 Sequence
點擊打開鏈接 給出一個m 求最少由幾個 3*n*(n-1)+1的數組成 3*n*(n-1)+1 == 6*(n*(n-1)/2)+1 定理: 至多三個三角形數( n*(n-1)/2 ) 可以構成任意自然數 對於一個數m 假
原创 【瞎搞】 HDU 5358 First One
點擊打開鏈接 根據| log2 a +1 | =k 枚舉k得到 區間 [2^(k-1), 2^k-1] ; k =[0,34] 再枚舉左端 i: 對於一個i 找到一個區間 [l, r]滿足[ 2^(k-1), 2^k-1] 然後