51Nod 1495 中國好區間

2021-08-03 08:44:03 字數 905 閱讀 9604

acm模版

這個題真的很讓人出乎意料……沒成想,1e7的資料醬紫搞竟然能在0.7s內搞定。

首先,我們暴力獲得陣列 a[

] ,然後使用尺取法,先獲取乙個滿足題意的 l=

1,r=

?,cn

t=k 的區間,接著呢,很明顯只要右區間大於

r 都是好區間,然後尺取法往後繼續查詢剛好滿足 l=

?,r=

?,cn

t=k的區間,累計好區間即可。

**不難,但是一開始很難相信這是可行的。事後想想也是,像這種海量資料的情況,時間消耗很大一部分在 i/o 階段,而題目中也剛好提到,為了避免這個階段的影響,而想到了這個絕妙的方法……咳咳,這個題就先醬紫吧。

#include 

using

namespace

std;

typedef

long

long ll;

const

int maxn = 1e7 + 10;

ll n, k, t, b, c, p;

ll res = 0;

ll a[maxn];

void solve()

}int l = 1, r = 1, cnt = 0;;

while (r <= n)

if (cnt == k)

r++;

}while (r <= n && r - l + 1 >= k)}}

l++;

}}int main()

51nod 1495 中國好區間

這道題給我說了尺取法我也不會,沒辦法只能看別人的部落格 感覺弄得好巧妙啊 首先,條件是選取的長度大於等於 k k 這個好理解,就他的兩個指標 r l 1 k role presentation r l 1 kr l 1 k就行了。但是要求從大到小第 k k 大的數要大於 t role present...

51nod1495 中國好區間

雙指標掃一遍 include include include includeusing namespace std define rep i,s,t for int i s i t i define dwn i,s,t for int i s i t i define clr x,c memset ...

51nod1495 中國好區間 思維

題目大意 阿爾法在玩乙個遊戲,阿爾法給出了乙個長度為n的序列,他認為,一段好的區間,它的長度是 k的,且該區間的第k大的那個數,一定大於等於t。那麼問題來了,阿爾法想知道有多少好的區間。由於阿爾法的序列長度實在是太大了,無法在規定時間內讀入。他想了乙個絕妙的方法。讀入a 0 b,c,p,則a i a...