正题

题目链接:https://www.luogu.com.cn/problem/U142585?contestId=37855


题目大意

nnn个数,求所有区间中位数的中位数。


解题思路

二分一个答案,然后如果一个区间的中位数≥mid\geq mid≥mid,那么这个区间一定是≥mid\geq mid≥mid的数比<mid<mid<mid的数要多。那么把一个≥mid\geq mid≥mid的数定为111,否则定为−1-1−1,然后问题就变成了要求多少个和大于等于000的数了。直接上树状数组即可。

时间复杂度O(nlog⁡2n)O(n\log^2 n)O(nlog2n)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define lowbit(x) (x&-x)
#define ll long long
using namespace std;
const ll N=1e5+10;
ll n,a[N],t[N<<1],b[N];
void Change(ll x,ll val){x++;while(x<=2*n+1){t[x]+=val;x+=lowbit(x);}return;
}
ll Ask(ll x){ll ans=0;x++;while(x){ans+=t[x];x-=lowbit(x);}return ans;
}
bool check(ll x){memset(t,0,sizeof(t));ll sum=0,ans=0;Change(n,1);for(ll i=1;i<=n;i++){sum+=(a[i]>=x)?1:-1;ans+=Ask(sum+n);Change(sum+n,1);}return ans>=(n*(n+1)/2)/2;
}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld",&a[i]),b[i]=a[i];sort(b+1,b+1+n);ll cnt=unique(b+1,b+1+n)-b-1;ll l=1,r=cnt;while(l<=r){ll mid=(l+r)>>1;if(check(b[mid]))l=mid+1;else r=mid-1;}printf("%lld",b[r]);
}

[2020.11.27NOIP模拟赛]中位数之中位数【二分,树状数组】相关推荐

  1. [2020.11.27NOIP模拟赛]拼图王【dp】

    正题 题面链接:https://www.luogu.com.cn/problem/U142584 题目大意 nnn个010101串,按顺序分成两个序列,然后拼接成一个序列(拼接串x,yx,yx,y的话 ...

  2. YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列,求有多少个区间[l,r][l,r][l,r]的平均值在[L,R ...

  3. 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组

    武当派一共有 nnn 人,门派内 nnn 人按照武功高低进行排名,武功最高的人排名第 111,次高的人排名第 222,... 武功最低的人排名第 nnn.现在我们用武功的排名来给每个人标号,除了祖师爷 ...

  4. ACM学习历程—51NOD 1685 第K大区间2(二分 树状数组 中位数)

    http://www.51nod.com/contest/problem.html#!problemId=1685 这是这次BSG白山极客挑战赛的E题. 这题可以二分答案t. 关键在于,对于一个t,如 ...

  5. [2020.11.26NOIP模拟赛]勇者的后缀【SA,RMQ,主席树,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/U142356?contestId=37784 题目大意 一个字符串,询问给出(x,l,r)(x,l,r)(x,l,r ...

  6. [2020.11.25NOIP模拟赛]出租车【dp】

    正题 题面链接:https://www.luogu.com.cn/problem/U142298?contestId=37766 题目大意 nnn个人有起点和终点,按顺序上车,但下车可以任意顺序,车最 ...

  7. [2020.11.3NOIP模拟赛]选数字【容斥】

    正题 题目链接:https://www.luogu.com.cn/problem/U138404?contestId=36493 题目大意 nnn个数字,每次询问一个区间有多少个三对数或为xxx. 解 ...

  8. [2020.11.26NOIP模拟赛]询问【字符串hash】

    正题 题目链接:https://www.luogu.com.cn/problem/U142342?contestId=37784 题目大意 一个字符串,定义两个字符串相似为用一些字母代替相同的字母后可 ...

  9. [2020.11.25NOIP模拟赛]下棋【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/U142297?contestId=37766 题目大意 nnn个白棋mmm个黑棋排成一排,要求没有任何一段黑白棋的个 ...

最新文章

  1. centos7 系统下搭建 lnmp 环境
  2. 【分享】分享一款不错的网页视频播放器
  3. linux shell之数组
  4. securecrt切换会话(session)的显示方式
  5. 【Linux】【服务器】 CentOS7下安装Redis详细过程步骤
  6. python打包成exe_python 程序打包成exe程序
  7. mac上实时运行linux系统,使用Darling模拟器实现在Linux上运行Mac OS X程序
  8. 教你win7显卡驱动如何安装,win7电脑显卡驱动的安装方法
  9. 图像识别中——目标分割、目标识别、目标检测和目标跟踪的区别
  10. python怎么读取csv文件-Python读取csv文件(详解版,看了无师自通)
  11. linux服务器数据备份到本地硬盘_等保数据备份和恢复关键点,这些你该知道!...
  12. 供应链管理为什么要上企业自主可控的免费开源ERP Odoo
  13. 博客首页全新改版;博客代码片支持折叠;原创博文新增打赏功能……【2022.1.17】
  14. [lammps教程]OVITO绘制原子应力云图
  15. 入选司法部案例库,效率源协助的这起网络游戏外挂案到底“优”在何处?
  16. PR/AE/CTA学习笔记
  17. (第六章)hive之查询
  18. 图解PhotoView,从“百草园”到“三味书屋”!
  19. 【微信支付接口调用】
  20. Python第一周学习总结

热门文章

  1. 代理管家app_亲亲小保社保管家app2021下载_亲亲小保社保管家app最新版下载
  2. 移动计算机怎么开机密码,win7忘记开机密码解决办法
  3. linux访问nfs端口号,linux nfs配置及访问控制
  4. 机器学习之数据预处理——特征编码(标签编码,独热编码)
  5. 7-20 表达式转换 (25 分)(代码详解+题目分析)
  6. 了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
  7. mysql表缓冲大小可能设置过小_MySQL 5.7 my.cnf配置文件详解
  8. [mybatis]逆向工程MGB基本编写
  9. [mybatis]Getting Started
  10. [C语言] va_start和va_end详解