BZOJ1303 [CQOI2009]中位数图 差分+前缀和
来源:互联网 发布:pc端口 命令 编辑:程序博客网 时间:2024/05/29 04:59
给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。
差分。找到b在数列中的位置设为pos,比b大的赋值为-1,比b小的赋值为1.
差分。找到b在数列中的位置设为pos,比b大的赋值为-1,比b小的赋值为1.
再对pos左边做后缀和,右边做前缀和.
因为数组下标不能为负,所以累加时+n.
乘法原理统计答案.
#include<bits/stdc++.h>#define LL long long#define clr(x,i) memset(x,i,sizeof(x))using namespace std;const int N=100005;int n,b,pos,sum[N],l[N*2],r[N*2];int main(){scanf("%d%d",&n,&b);for(int i=1,x;i<=n;i++){scanf("%d",&x);if(x<b)sum[i]=-1;if(x>b)sum[i]=1;if(x==b)pos=i,sum[i]=0;}l[0+n]=r[0+n]=1;for(int i=pos-1;i>0;i--) sum[i]+=sum[i+1],l[sum[i]+n]++;for(int i=pos+1;i<=n;i++) sum[i]+=sum[i-1],r[sum[i]+n]++;LL ans=0;for(int i=0;i<2*n;i++) ans+=(LL)l[i]*r[2*n-i];printf("%lld",ans);return 0;}
阅读全文
0 0
- BZOJ1303 [CQOI2009]中位数图 差分+前缀和
- [BZOJ1303]CQOI2009中位数图|乘法原理|前缀和
- [BZOJ1303][CQOI2009]中位数图
- [BZOJ1303][CQOI2009]中位数图
- BZOJ1303[CQOI2009]中位数图
- [BZOJ1303] [CQOI2009]中位数图
- bzoj1303: [CQOI2009]中位数图
- bzoj1303[CQOI2009]中位数图
- [bzoj1303][CQOI2009]中位数图
- bzoj1303: [CQOI2009]中位数图
- bzoj1303 [CQOI2009]中位数图
- 【bzoj1303】[CQOI2009]中位数图
- [BZOJ1303][CQOI2009]中位数图
- bzoj1303 [CQOI2009]中位数图
- bzoj1303: [CQOI2009]中位数图
- bzoj1303: [CQOI2009]中位数图
- BZOJ1303(CQOI2009)[中位数图]--奇技淫巧
- BZOJ1303 [CQOI2009]中位数图 【乱搞】
- MFC打开文件并发送字符串消息
- 第一次游戏改进版
- Servlet的生命周期概述;设置Servlet的启动时加载
- [leetcode]#19. Remove Nth Node From End of List
- tomcat服务端查询url端口
- BZOJ1303 [CQOI2009]中位数图 差分+前缀和
- 实践线性模型对于大规模一类别协同过滤
- 搭建git私服
- [OpenGL] 初识OpenGL,计算机图形学
- 23种设计模式(四)
- TCP/IP 和 HTTP
- 安卓使用MediaPlayer自定义音频视频播放器
- 项目整理二:Echarts
- hibernate中懒加载禁用的方式