【BZOJ】
【算法】堆+貪心+RMQ
【題解】
考慮暴力是把所有滿足要求的子串算出答案,取前k小的,O(n^2)。
考慮優化,將左端點為x,右端點為x+L-1~x+R-1的子串視為一類。
所以定義三元組(x,l,r)為一類,其中l=x+L-1,r=x+r-1。
在一類中我們第一步應該取一類中的最大值,即取max(sum[l~y]),l<=y<=r。
max(sum[l~y])轉化為求max(sum[1~y]-sum[1~l]),顯然一類中sum[1~l]相同消去,即求max(sum[1~y]),維護前綴和並用RMQ的ST表O(1)查詢。
所以定義三元組(x,l,r)的值為max,坐標為y,按值加入堆。
取出三元組(x,l,r)後加入兩個三元組(x,l,y-1)和(x,y+1,r)。
本題的特點是利用同一類可以O(1)求答案來優化的。
【BZOJ】
相關推薦
【BZOJ】3971 [WF2013]Матрёшка
數組 .html ide html cstring str n) div x優化 【算法】區間DP 【題解】 參考寫法:BZOJ 3971 Матрёшка 解題報告 第二個DP可以預處理mex優化到O(nM+n2),不過我懶…… 第一個DP有另一種寫法:不預處理,在一個n
【BZOJ】2049 [Sdoi2008]Cave 洞穴勘測
.com oid pre sdoi2008 print reserve mes tdi down 【算法】Link-Cut Tree 【題解】lct 不是很懂你們會壓常數的>_<! #include<cstdio> #include<alg
【BZOJ】3676 [Apio2014]回文串
esp ret 結點 += lap first trees db4 lld 【算法】回文樹 【題解】建回文數,然後一個回文子串出現的次數就是結點被訪問的次數以及能包含它的結點被訪問的次數。 根據fail樹反向建新樹,那麽答案就是結點所在子樹的權值和(權值就是結點被訪問次數)
【BZOJ】1130 N的階乘的長度 V2(斯特林近似)
n) ges src algo span ace pan nbsp closed 【算法】數學 【題解】斯特林公式: #include<cstdio> #include<algorithm> #include<cmath> usin
【BZOJ】3502 PA2012 Tanie linie
一位 == 可能 const ring 變化 過多 opened 個數 【算法】 【題解】 胡策k≤10的環狀DP做法: 1.欽定法:先確定第一位(可能和第n位)的狀態,然後後面正常做DP,顯然正確答案是一定會被記錄的,因為從整體上看不會有影響。 2.環的特性:取的段和不取
【BZOJ】2142 禮物
禮物 題解 中國剩余定理 pop 影響 ron 個人 公式 nbsp 【算法】中國剩余定理+組合數取模(lucas) 【題意】給定n件物品分給m個人,每人分到wi件,求方案數%p。p不一定是素數。 【題解】 首先考慮n全排列然後按wi劃分成m份,然後對於每份內都是全排列,除
【BZOJ】1607: [Usaco2008 Dec]Patting Heads 輕拍牛頭
span urn isp view splay none for gif class 【算法】模擬 #include<cstdio> #include<algorithm> using namespace std; const int maxn=
【BZOJ】1076 [SCOI2008]獎勵關
算法 結合 期望dp 枚舉 來源 獎勵 使用 狀態 題目 【算法】期望DP+狀壓DP 【題解】f[i][j]表示第i輪,狀態為j的期望得分。 期望DP一般倒著做,因為正著做的話會可能從很多狀態都可以滿足當前選擇,需要雙重枚舉。 而如果倒著做的話,是已知當前狀態枚舉後面的選擇
【BZOJ】3566: [SHOI2014]概率充電器
algorithm blog gif 表示 引用 clu oid 必須 scanf 【算法】樹型DP+期望DP 【題意】一棵樹上每個點均有直接充電概率qi%,每條邊有導電概率pi%,問期望有多少結點處於充電狀態? 【題解】引用自:【BZOJ3566】【SHOI2014】概率
【BZOJ】4318: OSU!
ron 元素 發現 scanf line clas n) ble 收益 【算法】期望DP 【題解】 OSU!(誤) 原本在糾結長度很不好算啊……x有好多種可能,新增一個不知道加多少QAQ 後來發現我們不是在算期望嘛……不是就算期望長度就好了嘛。 f[i]為加入第i個後的收益
【bzoj】1046: [HAOI2007]上升序列
升序 open one end pan cst isp stdin 一道 作為一個蒟蒻,頭一回在bzoj這個神奇的oj上寫題(A+B這麽難的題就不說了) 廢話不多說,先讓dalao們看看題吧: 題目描述: 對於一個給定的S={a1,a2,a3,…,an},
【BZOJ】1299: [LLH邀請賽]巧克力棒
-a main ring bool include 我們 i++ color name 【算法】博弈論 【題解】這道題不是典型的SG函數題了。 不把它當成遊戲看待,那麽這道題是在說n個石子堆,每次可以加入若幹個或進行Nim遊戲。 我們當前先手,則考慮構造必敗態來獲勝。 當前
【BZOJ】2038: [2009國家集訓隊]小Z的襪子(hose)
detail log net 施工 pop href .net tails zoj 【算法】莫隊 【題解】 BZOJ 2038 2009國家集訓隊 小Z的襪子(hose) 莫隊算法 莫隊……講稿? 施工中……【BZOJ】2038: [2009國家集訓隊]小Z的襪子(hose
【BZOJ】
max 要求 -s 算法 所有 是把 rmq 坐標 bzoj 【算法】堆+貪心+RMQ 【題解】 考慮暴力是把所有滿足要求的子串算出答案,取前k小的,O(n^2)。 考慮優化,將左端點為x,右端點為x+L-1~x+R-1的子串視為一類。 所以定義三元組(x,l,r)為一類,
【BZOJ】1954: Pku3764 The xor-longest Path
return 分享 print 題解 first spl 數值 lose 復雜 【算法】trie樹+xor路徑 【題解】 套路1:統計從根到每個點的xor路徑和,由於xor的自反性,兩個點到根的xor路徑和異或起來就得到兩點間路徑和。 然後問題就是找到n個值中異或值最大的兩
【BZOJ】1537: [POI2005]Aut- The Bus
spl read zoj return 觀察 cst isp algo ins 【算法】DP+線段樹求區間max(二維偏序) 【題解】 狀態轉移方程:f[i]=max(f[j]+v[i]),x[j]<x[i]&&y[j]<y[i]。 觀察j的條件
【BZOJ】1572: [Usaco2009 Open]工作安排Job
const truct hid for view top pan closed tdi 【算法】貪心+堆 【題解】算法上貪心+堆是一定可以想到的,關鍵在於貪心的姿勢。 如果是訪問到x時將d[x]前的點從價值最大的能加就加是錯誤的貪心,因為後面的點會占用到前面的,不能保證已選
【BZOJ】1711: [Usaco2007 Open]Dining吃飯
play push scanf truct int urn ont rst 題解 【算法】最大流 【題解】 S連向食物連向牛連向牛‘連向飲料連向T。 經典的一個元素依賴於兩個元素的建圖方式。 #include<cstdio> #include<algo
【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集會
digi 答案 span col fin tchar size 奶牛 esp 【算法】樹型DP 【題解】 兩遍DFS,第一次得到所有節點子樹的路徑和,第二次給出除了該子樹外其它部分的路徑和,時時計算答案。 long long!!! #include<cstdio&
【BZOJ】1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的鄰居
平衡樹 哈夫曼 轉化 並查集 數學 usaco 經典 cow strong 【算法】並查集+平衡樹+數學 【題解】 經典哈夫曼距離轉切比雪夫距離。 哈夫曼距離:S=|x1-x2|+|y1-y2| 即:max(x1-x2+y1-y2,x1-x2-y1+y2,-x1+x2+y1