51nod 1682 中位數計數

2021-08-25 05:32:56 字數 1017 閱讀 3934

1682 中位數計數

基準時間限制:1 秒 空間限制:131072 kb 分值: 40 難度:4級演算法題

中位數定義為所有值從小到大排序後排在正中間的那個數,如果值有偶數個,通常取最中間的兩個數值的平均數作為中位數。

現在有n個數,每個數都是獨一無二的,求出每個數在多少個包含其的區間中是中位數。

input

第一行乙個數n(n<=8000)

第二行n個數,0<=每個數<=10^9

output

n個數,依次表示第i個數在多少包含其的區間中是中位數。
input示例

5

1 2 3 4 5

output示例

1 2 3 2 1
這道題排序之後,在判的為0,沒判的為-1,判過的為1,然後現在是按大小遍歷的,只要現在你的這個數左邊的和等於右邊的和

就說明能夠滿足要求,然後利用桶排序的性質,把每次答案都記錄下來

#include#define ll long long

#define maxn 20000

using namespace std;

struct node

ac[10000];

bool cmp(node a,node b)

sort(ac+1,ac+1+n,cmp);

memset(mark,-1,sizeof(mark));

memset(ans,0,sizeof(ans));

for(ll i=1;i<=n;i++)

for(ll j=ac[i].id;j<=n;j++)

mark[ac[i].id]=1;

}for(ll i=1;i<=n;i++)

else

cout<

}return 0;

}/*10

10 7 4 8 2 3 1 9 6 5

1 4 6 1 2 6 1 1 4 4

*/

51Nod 1682 中位數計數

acm模版 這裡,我們可以分析得到,符合規則的區間有四種形式,分別是 i 1 j i 2 i j 3 j i j 4 而這裡,第一種不用過多處理,就是1 第2種和第3種類似,所以,我們需要求出來i之前的num的匹配情況,和i之後的num的匹配情況 而第四種要求的是,在第2種和第3種的基礎上,進行匹配...

51NOD 1682 中位數計數

1682 中位數計數 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 收藏 關注 中位數定義為所有值從小到大排序後排在正中間的那個數,如果值有偶數個,通常取最中間的兩個數值的平均數作為中位數。現在有n個數,每個數都是獨一無二的,求出每個數在多少個包含其的區間中是中...

51Nod 1682 中位數計數

中位數定義為所有值從小到大排序後排在正中間的那個數,如果值有偶數個,通常取最中間的兩個數值的平均數作為中位數。現在有n個數,每個數都是獨一無二的,求出每個數在多少個包含其的區間中是中位數。input 第一行乙個數n n 8000 第二行n個數,0 每個數 10 9 output n個數,依次表示第i...