原创 【分塊】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] 然後