51Nod 1686 第K大區間

2021-08-07 03:16:01 字數 462 閱讀 9616

題意:中文題,定義乙個區間的值為其眾數出現的次數

現給出n個數,求將所有區間的值排序後,第k大的值為多少。

離散化二分答案加尺取判斷

#include#include#includeusing namespace std;

const int maxn = 100006;

typedef long long ll;

int len;

int num[maxn];

int tmp[maxn];

int vis[maxn];

int id[maxn];

int n;

ll k;

bool check(int mid)

else

int main()

{ scanf("%d%i64d",&n,&k);

for(int i=0;i

51nod 1686 第K大區間

1686 第k大區間 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 定義乙個區間的值為其眾數出現的次數。現給出n個數,求將所有區間的值排序後,第k大的值為多少。input 第一行兩個數n和k 1 n 100000,k n n 1 2 第二行n個數,0 每個數 2...

51 nod1686 第K大區間

定義乙個區間的值為其眾數出現的次數。現給出n個數,求將所有區間的值排序後,第k大的值為多少。很簡單的乙個題啊。然後我想了很久,是不是藥丸了啊。才四級題就差點想不出來了 明顯地二分乙個答案mid啊 主要是一開始思路死在乙個地方了,在考慮判斷是否合法 但其實我們並不需要在意我們找到這個數是不是眾數 因為...

51nod 1686 第K大區間

題目鏈結 這道題是真的好 思想很好 思路其實也不是很難 但是也不容易理解 首先,這道題運用了二分 因為答案一定是1 n 區間眾數最多n個,最少1個 那麼從1 n二分mid,二分後判斷區間值比mid大的區間有幾個 如果大於k說明mid取的小了,應該取大一點,反之取小一點,最後找到答案 那麼如何判斷區間...