洛谷P1627 CQOI2009 中位數

2021-09-25 23:48:21 字數 888 閱讀 6473

給出1~n的乙個排列,統計該排列有多少個長度為奇數的連續子串行的中位數是b。中位數是指把所有元素從小到大排列後,位於中間的數。

第一行為兩個正整數n和b,第二行為1~n的排列。

【資料規模】

對於30%的資料中,滿足n≤100;

對於60%的資料中,滿足n≤1000;

對於100%的資料中,滿足n≤100000,1≤b≤n。

輸出乙個整數,即中位數為b的連續子串行個數。

輸入 #1複製

7 4

5 7 2 4 3 1 6

輸出 #1複製

4
這是其實是個水題,因為中位數都告訴你了,無非就兩種情況:1、以該中位數為邊界的序列,2、包含這個中位數的序列。只需要用乙個標記陣列記錄每個數與所給中位數的相對大小(大於記為1,小於記為-1),然後以那個指定的中位數的位置向兩邊分別遍歷一遍,記錄標記陣列的累加和,和為零時就為乙個滿足要求的序列(情況1),遍歷另一邊時不僅要考慮情況1,還要再加上指定中位數左邊連續和能和當前連續和相抵消的序列(加起來為零)的個數(用sum記錄的,因為可能會減出負數,所以sum的下標再加上乙個maxn)(情況2)

完整**:

#include using namespace std;

const int maxn=1e5+6;

int a[100010],vis[100010],sum[110000];

int main()

else if(a[i]=1;i--)

}s=0;

for(int i=pos+1;i<=n;i++)

cnt+=sum[maxn-s];

}cout<<++cnt<}

洛谷P3145 CQOI2009 迴圈賽

n隊伍比賽,每兩支隊伍比賽一次,平1勝3負0.給出隊伍的最終得分,求多少種可能的分數表。第一行包含乙個正整數n,隊伍的個數。第二行包含n個非負整數,即每支隊伍的得分。輸出僅一行,即可能的分數表數目。保證至少存在乙個可能的分數表。65 6 7 7 8 8 n 8 這麼小的範圍肯定是搜尋啊。狀態即為當前...

洛谷 P1627 中位數

原題 考場想到了正解,但是依舊選擇了暴力,這究竟是天意,還是人覺啊!為了表示內心的惋惜與痛卻,還寫什麼解題思路啊!找到指定數的位置,算一遍字首和 如果a i include include include include include include include include include...

洛谷P4170 CQOI2007 塗色

假設你有一條長度為5的木版,初始時沒有塗過任何顏色。你希望把它的5個單位長度分別塗上紅 綠 藍 綠 紅色,用乙個長度為5的字串表示這個目標 rgbgr。每次你可以把一段連續的木版塗成乙個給定的顏色,後塗的顏色覆蓋先塗的顏色。例如第一次把木版塗成rrrrr,第二次塗成rgggr,第三次塗成rgbgr,...