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

Solution

(这个题为什么会被打上数学标签?)

由于给出的是排列,我们找到这个数在哪,然后考虑它左边和右边的数

我们把比它大的数都变成 \(1\) ,小的都变成 \(-1\)

向左的后缀和值构成的多重集 \(A\),向右的 \(B\)

现在就是要在向左和向右里面各找出一个数相加和为 \(0\),求方案数

拿桶搞搞就可以了

#include <bits/stdc++.h>
using namespace std; #define int long long
int n,k,x[100005],s[200005],a[200005],b[200005]; signed main() {
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>x[i];
int pos=0;
for(int i=1;i<=n;i++) if(x[i]==k) pos=i;
for(int i=1;i<=n;i++) {
if(x[i]>k) s[i]=1;
if(x[i]<k) s[i]=-1;
}
for(int i=pos-1;i;--i) s[i]+=s[i+1];
for(int i=pos+1;i<=n;i++) s[i]+=s[i-1];
for(int i=1;i<=pos;i++) a[s[i]+100000]++;
for(int i=pos;i<=n;i++) b[s[i]+100000]++;
int ans=0;
for(int i=0;i<=200000;i++) ans+=a[i]*b[200000-i];
cout<<ans;
}

[CQOI2009] 中位数 - 桶的更多相关文章

  1. BZOJ 1303 CQOI2009 中位数图 水题

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2340  Solved: 1464[Submit][Statu ...

  2. BZOJ 1303: [CQOI2009]中位数图【前缀和】

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2737  Solved: 1698[Submit][Statu ...

  3. Luogu1627 [CQOI2009]中位数

    Luogu1627 [CQOI2009]中位数 给出一个 \(n\) 的排列,统计该排列有多少个长度为奇数的连续子序列的中位数是 \(k\) \(n\leq10^5\) \(trick\) :因为不需 ...

  4. 洛谷 P1627 [CQOI2009]中位数 解题报告

    P1627 [CQOI2009]中位数 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 输入输出格式 输入格式 ...

  5. 【BZOJ1303】[CQOI2009]中位数图(模拟)

    [BZOJ1303][CQOI2009]中位数图(模拟) 题面 BZOJ 洛谷 题解 把大于\(b\)的数设为\(1\),小于\(b\)的数设为\(-1\).显然询问就是有多少个横跨了\(b\)这个数 ...

  6. bzoj千题计划175:bzoj1303: [CQOI2009]中位数图

    http://www.lydsy.com/JudgeOnline/problem.php?id=1303 令c[i]表示前i个数中,比d大的数与比d小的数的差,那么如果c[l]=c[r],则[l+1, ...

  7. [CQOI2009] 中位数 (前缀和)

    [CQOI2009] 中位数 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 输入输出格式 输入格式: 第一行 ...

  8. bzoj 1303: [CQOI2009]中位数图 数学

    1303: [CQOI2009]中位数图 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  9. BZOJ1303 [CQOI2009]中位数图 【乱搞】

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3086  Solved: 1898 [Submit][Sta ...

随机推荐

  1. MySQL中的执行计划explain

    一.用法及定义: explain为sql的执行计划.在sql前面加上explain关键字即可 如:explain select * from tbl_emp; 名词解释: id:[操作表的顺序] 1. ...

  2. DK1.5-JDK11各个新特性

    摘要: 参考文献: https://blog.csdn.net/lsxf_xin/article/details/79712537 JDK各个版本的新特性 要了解一门语言,最好的方式就是要能从基础的版 ...

  3. #6029. 「雅礼集训 2017 Day1」市场 [线段树]

    考虑到每次除法,然后加法,差距会变小,于是维护加法lazytag即可 #include <cstdio> #include <cmath> #define int long l ...

  4. 部署Nexus作为docker的私有仓库

    目录 Docker搭建Nexus私有仓库... 1 一.安装部署... 1 1.安装... 2 2.访问网页端... 2 二.配置使用... 2 1.创建本地仓库... 2 2.docker配置... ...

  5. 新年上新!极光认证 Web SDK 首版上线

    新年伊始,极光开发者服务也抢先为各位开发者朋友带来了"新年大礼包",几款明星产品都悉数有不少更新: 极光认证 Web SDK 版本上线 相信不少小伙伴早已熟知极光认证这款产品,3秒 ...

  6. CentOS配置禁止root用户直接登录

    Linux的默认管理员名即是root,只需要知道ROOT密码即可直接登录SSH.禁止Root从SSH直接登录可以提高服务器安全性.经过以下操作后即可实现.本文适用于CentOS.Debian等Linu ...

  7. (办公)记事本_Linux查找命令

    参考谷粒学院的linux视频教程:http://www.gulixueyuan.com/course/300/task/7091/show 搜索命令 .whereis命令: 1.1.Linux whe ...

  8. 监控自己的电脑浏览器访问记录并生成csv格式

    #!usr/bin/env python #-*- coding:utf-8 _*- """ @author:lenovo @file: 获取浏览器历史记录.py @ti ...

  9. 学习R语言的一点小心得

    1.目前R 语言处于入门阶段吧,能够执行一些简单的模型了,还是有收获的. 但是在跑模型的时候经常遇到各种各样的错误,最常见的错误就是数据带入模型之后,数据的类型不对,因此模型跑不下去,因此说,利用he ...

  10. 吴裕雄--天生自然HADOOP操作实验学习笔记:hbase的shell应用v2.0

    HRegion 当表的大小超过设置值的时候,HBase会自动地将表划分为不同的区域,每个区域包含所有行的一个子集.对用户来说,每个表是一堆数据的集合,靠主键来区分.从物理上来说,一张表被拆分成了多块, ...