Krydom: 暁の水平线に胜利を刻むのです

ソロモンの悪夢、見せてあげる!

@krydom2年前

05/10
10:08
数学其他

[bzoj 1303] CQOI2009 中位数图

♦♦♦♦♦♦   Description   ♦♦♦♦♦♦

 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。

♦♦♦♦♦♦   Input   ♦♦♦♦♦♦

第一行为两个正整数n和b ,第二行为1~n 的排列。

♦♦♦♦♦♦   Output   ♦♦♦♦♦♦

输出一个整数,即中位数为b的连续子序列个数。

♦♦♦♦♦♦   Sample Input   ♦♦♦♦♦♦

7 4
5 7 2 4 3 1 6

♦♦♦♦♦♦   Sample Output   ♦♦♦♦♦♦

4

♦♦♦♦♦♦   Hint   ♦♦♦♦♦♦

第三个样例解释:{4}, {7,2,4}, {5,7,2,4,3}和{5,7,2,4,3,1,6}
N<=100000

♦♦♦♦♦♦   题解  ♦♦♦♦♦♦

首先找出b在原数列中的位置,设为point,然后把所有大于b的数设为1,小于b的数设为0,分别从point往左和往右做一遍前缀和,对于往左的l[sum[i]]++,往右的r[sum[i]]+1,最后的答案就是sum(l[i]*r[-i]);

c++:

pascal:

 

[bzoj 1303] CQOI2009 中位数图