[FZYZOJ 1429] 送分题 【左右统计】
Description
给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。
Input Format
第一行为两个正整数n和b ,第二行为1~n 的排列。
Output Format
输出一个整数,即中位数为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
【题解】
左右分别统计下,然后乘起来就行了
时间复杂度$O(n)$
# include <stdio.h> # define FAST __attribute__((optimize("-O2"))) using namespace std; int n, a[100010], pos, b, l[200010], r[200010], ans=1; FAST int main() { scanf("%d%d",&n,&b); for (int i=1;i<=n;++i) { scanf("%d",&a[i]); if (a[i]==b) pos=i; } int g=0; for (int i=pos+1;i<=n;++i) { if(a[i]<b) g++; else g--; l[g+n]++; } g=0; for (int i=pos-1;i>=1;--i) { if(a[i]>b) g++; else g--; r[g+n]++; } ans+=l[n]+r[n]; for (int i=1;i<=2*n-1;++i) { ans += (l[i]*r[i]); } printf("%d\n",ans); return 0; }
2023年4月17日 21:16
APPSC Model Papers is a startup by passionate webmasters and bloggers who have a passion to provide engaging content which is accurate, interesting, and worthy to read. We are more like a web community where you can find different information, resources, and topics on day-to-day incidents or news. appscmodelpapers.in We provide you with the finest of web content on each and every topic possible with help of the editorial and content team.