bzoj 1303 中位数
来源:互联网 发布:淘宝卖家新手入门教程 编辑:程序博客网 时间:2024/06/07 01:51
bzoj 1303 中位数
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1303
Description
给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。
Input
第一行为两个正整数n和b ,第二行为1~n 的排列。
Output
输出一个整数,即中位数为b的连续子序列个数。
Sample Input
7 4
5 7 2 4 3 1 6
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)的方法
将小于b的标记为-1,大于b的标记为1,b本身标记为0
#include<cstdio>#include<iostream>using namespace std;int num[100001],sum[100001],l[200001],r[200001];int n,b,point,ans;int main(){ scanf("%d%d",&n,&b); for(int i=1; i<=n; i++) { scanf("%d",&num[i]); if(num[i]>b)num[i]=1; else if(num[i]==b) { num[i]=0; point=i; } else num[i]=-1; } l[n]=1; r[n]=1; for(int i=point-1; i>=1; i--) { sum[i]=sum[i+1]+num[i]; l[sum[i]+n]++; } for(int i=point+1; i<=n; i++) { sum[i]=sum[i-1]+num[i]; r[sum[i]+n]++; } for(int i=0; i<=2*n-1; i++)ans+=l[i]*r[2*n-i]; printf("%d",ans); return 0;}
0 0
- bzoj 1303 中位数
- bzoj 1303 中位数 题解
- Bzoj-1303 中位数
- BZOJ 1303-中位数图(中位数技巧)
- 【BZOJ 1303】 [CQOI2009]中位数图
- bzoj 1303 [CQOI2009]中位数图
- BZOJ 1303 [CQOI2009]中位数图
- 【BZOJ 1303】 【CQOI2009】中位数图
- BZOJ 1303: [CQOI2009]中位数图
- bzoj 1303: [CQOI2009]中位数图
- BZOJ 1303 [CQOI2009]中位数图
- BZOJ 1303 - [CQOI2009]中位数图 (技巧)
- BZOJ 1303 CQOI 2009 中位数图 模拟
- BZOJ-1303 中位数图 数学+乱搞
- 【BZOJ】1303 [CQOI2009]中位数图 建模
- BZOJ 1303: [CQOI2009]中位数图 计数,思维
- bzoj 1303: [CQOI2009]中位数图 (乱搞)
- BZOJ 1831 中位数图
- 设计模式C++学习笔记之八(Adapter适配器模式)
- ppp和DHCP的区别
- (Android学习)ImageView设置异步加载的网络图片
- 设计模式C++学习笔记之九(Template Method模板方法模式)
- JavaEE事务
- bzoj 1303 中位数
- 避免Activity启动时某个控件马上获取焦点(如EditText/Gallery等)
- Flex 跨域访问解决方案
- usb camera 成功
- JNI由浅入深_8_JNI缓存字段和方法ID
- c#建立验证码图片
- java 拦截器和过滤器区别(转载)
- 获得PostgreSQL安装包和主要参考资料
- 解决eclipse下载超慢的问题