鏈結在這裡
問的是乙個數字序列中,有多少個第k大的數》=t的區間.
這題相當於問:有多少個》=k個」滿足大於等於t「的元素的區間.
預處理dp[i]為前i項元素》=t的元素個數之和. 尺取維護l和r.如果dp[r]-dp[l-1]>=k,說明[l,r]這個區間是合法的,那麼對於l來說, [l,e],其中e∈[r,n]都是合法的,所以答案+=n-r+1個元素. 注意用ll防止溢位
#include usingnamespace
std;
#define ll long long
const
int maxn=1e7+5
;int
dp[maxn];
intmain()
ll l = 1, r = k, ans = 0
;
while (1
) cout
<< ans << "\n"
;
return0;
}
51Nod 1495 中國好區間 尺取法
題意 在某一串行中,問有多少個好區間 區間長度大於等於 k 並且第 k 大的數大於等於 t。解題思路 1 滿足第 k 大的數大於等於 t,相當於在該區間中至少有 k 個數大於等於 t 用字尾陣列儲存該序列中前 i 個位置大於 t 的數。2 如果固定左端點,那麼對於乙個好區間,那麼右端點一定是可以往後...
bzoj1495 中國好區間
阿爾法在玩乙個遊戲,阿爾法給出了乙個長度為n的序列,他認為,一段好的區間,它的長度是 k的,且該區間的第k大的那個數,一定大於等於t。那麼問題來了,阿爾法想知道有多少好的區間。由於阿爾法的序列長度實在是太大了,無法在規定時間內讀入。他想了乙個絕妙的方法。讀入a 0 b,c,p,則a i a i 1 ...
51Nod 1495 中國好區間
acm模版 這個題真的很讓人出乎意料 沒成想,1e7的資料醬紫搞竟然能在0.7s內搞定。首先,我們暴力獲得陣列 a 然後使用尺取法,先獲取乙個滿足題意的 l 1,r cn t k 的區間,接著呢,很明顯只要右區間大於 r 都是好區間,然後尺取法往後繼續查詢剛好滿足 l r cn t k的區間,累計好...