Luogu P1627 中位数 先记录目标数的位置,并且把数组映射为: $$a[i]=\begin{cases}-1,a[i]<b\0,a[i]=b\1,a[i]>b\end{cases}$$ 然后分别求一个左边和右边的部分和,注意到下标可能为负,所以要数组整体向右偏移$n$. #include<bits/stdc++.h> #define N 100010 using namespace std; int n,b,pos; int a[N],sum[N],lsum[N*2],rs…
[BZOJ1303][CQOI2009]中位数图(模拟) 题面 BZOJ 洛谷 题解 把大于\(b\)的数设为\(1\),小于\(b\)的数设为\(-1\).显然询问就是有多少个横跨了\(b\)这个数所在的位置的区间的和恰好为\(0\).那么拿个数组记一下左边,右边直接算就好了. #include<iostream> #include<cstdio> using namespace std; #define ll long long #define MAX 100100 inlin…