中位数

题目描述

小\(N\)得到了一个非常神奇的序列\(A\)。这个序列长度为\(N\),下标从\(1\)开始。\(A\)的一个子区间对应一个序列,可以由数对\([l,r]\)表示,代表\(A[l],A[l + 1]\) ..., A[r]\(这段数。对于一个序列\)B[1], B[2], ..., B[k]$,定义B的中位数如下:

  1. 先对B排序。得到新的序列\(C\)。
  2. 假如\(k\)是奇数,那么中位数为\(C[\frac{k+1}{2}]\)。假如\(k\)为偶数,中位数为\(C[\frac{k}{2}]\)。

    对于\(A\)的所有的子区间,小\(N\)可以知道它们对应的中位数。现在小\(N\)想知道,所有长度\(>=Len\)的子区间中,中位数最大可以是多少。

输入描述:

第一行输入两个数\(N\),\(Len\)。

第二行输入序列\(A\),第\(i\)个数代表\(A[i]\)。

输出描述:

一行一个整数,代表所有长度\(>=Len\)的子区间中,最大的中位数。

备注:

数据范围:

30%: n <= 200

60%: n <= 2000

另外有20%:不超过50个不同的数

100%:1<=Len<=n<=10^5, 1 <= a[i] <= 10^9


话说本来写二分,但是被问了,为什么有单调性啊,大的成为中位数小的不一定啊

然后给迷住了

事实上,我们二分答案,得到的不是”答案大于它还是小于它“这样一个东西吗,而不是”它是否可以成为答案“,而且本来就是在求最大值娅

二分以后,把>=的置1,<的置-1

然后我们判断有没有一个长度大于len的区间大于0就可以了

处理前缀和最小值,扫描前缀和就可以了


Code:

#include <cstdio>
#include <algorithm>
const int N=1e5+10;
int a[N],b[N],f[N],n,len;
int min(int x,int y){return x<y?x:y;}
bool check(int p)
{
for(int i=1;i<=n;i++) f[i]=(a[i]>=p?1:-1)+f[i-1];
for(int mi=0,i=len;i<=n;i++)
{
mi=min(mi,f[i-len]);
if(f[i]>mi) return true;
}
return false;
}
int main()
{
scanf("%d%d",&n,&len);
for(int i=1;i<=n;i++) scanf("%d",a+i),b[i]=a[i];
std::sort(b+1,b+1+n);
int m=std::unique(b+1,b+1+n)-b-1;
for(int i=1;i<=n;i++)
a[i]=std::lower_bound(b+1,b+1+m,a[i])-b;
int l=1,r=m;
while(l<r)
{
int mid=l+r+1>>1;
if(check(mid))
l=mid;
else
r=mid-1;
}
printf("%d\n",b[l]);
return 0;
}

2018.9.9

牛客 NOIp模拟1 T1 中位数 解题报告的更多相关文章

  1. 牛客 NOIp模拟1 T3 保护 解题报告

    保护 题目描述 \(C\)国有\(n\)个城市,城市间通过一个树形结构形成一个连通图.城市编号为\(1\)到\(n\),其中\(1\)号城市为首都.国家有\(m\)支军队,分别守卫一条路径的城市.具体 ...

  2. 牛客OI周赛7-普及组 解题报告

    出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...

  3. 牛客练习赛 小A与任务 解题报告

    小A与任务 链接: https://ac.nowcoder.com/acm/contest/369/B 来源:牛客网 题目描述 小A手头有 \(n\) 份任务,他可以以任意顺序完成这些任务,只有完成当 ...

  4. nowcoder(牛客网)OI测试赛2 解题报告

    qwq听说是一场普及组难度的比赛,所以我就兴高采烈地过来了qwq 然后发现题目确实不难qwq.....但是因为蒟蒻我太蒻了,考的还是很差啦qwq orz那些AK的dalao们qwq 赛后闲来无事,弄一 ...

  5. Solution -「牛客 NOIP 模拟赛」打拳

    \(\mathcal{Description}\)   现 \(2^n\) 个人进行淘汰赛,他们的战力为 \(1\sim 2^n\),战力强者能战胜战力弱者,但是战力在集合 \(\{a_m\}\) 里 ...

  6. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...

  7. nowcoder(牛客网)OI测试赛3 解题报告

    昨天因为胡搞了一会儿社团的事情,所以错过(逃过)了nowcoder的测试赛..... 以上,听说还是普及组难度qwq,而且还有很多大佬AK(然而我这么蒻肯定还是觉得有点难度的吧qwq) 不过我还是日常 ...

  8. NOIP模拟2017.6.11解题报告

    T1: 水题: 代码: #include <cstdio> #include <iostream> #include <algorithm> using names ...

  9. NOIP模拟赛-旅行者问题 解题报告

    旅行者问题 [问题描述] lahub是一个旅行者的粉丝,他想成为一个真正的旅行者,所以他计划开始一段旅行.lahub想去参观n个目的地(都在一条直道上).lahub在起点开始他的旅行.第i个目的地和起 ...

随机推荐

  1. 【赛时总结】 ◇赛时·I◇ AtCoder ARC-098

    ◆赛时I◆ ARC-098 ■试题&解析■ ◆本场最水◆ C-Attention 长点儿信心吧-- [AtCoder ARC-098 C] [解析] 既然只存在左右(东西)两个朝向,那么领导右 ...

  2. Maven - 配置镜像仓库

    默认仓库的配置(全球中央仓库): 可以打开maven的安装目录/conf/settings.xml文件,配置镜像,找到如下一段配置,这里默认没有配置任何镜像,但是有一个被注释的配置范例: id: 镜像 ...

  3. springboot+Druid+mybatis整合

    一.添加Druid.MySQL连接池.mybatis依赖 <!--整合Druid--> <dependency> <groupId>com.alibaba</ ...

  4. PCA 实例演示二维数据降成1维

    import numpy as np # 将二维数据降成1维 num = [(2.5, 2.4), (0.5, 0.7), (2.2, 2.9), (1.9, 2.2), (3.1, 3.0), (2 ...

  5. 多进程(multiprocessing module)

    一.多进程 1.1 多进程的概念 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好 ...

  6. dategrip破解

    https://blog.csdn.net/weixin_39428938/article/details/81078806

  7. python-4函数式编程

    1-高阶函数 变量可以指向函数.   def add(x, y, f): 例如f参数为函数 编写高阶函数,就是让函数的参数能够接收别的函数. Python内建了map()和reduce()高阶函数. ...

  8. pyplot基础图表函数概述

    pyplot饼图的绘制 pyplot直方图的绘制 极坐标图的绘制

  9. 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo

    上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货 ...

  10. mac上MySQLdb问题解决

    早上有个同学问题python访问mysql的问题,之前的写得脚步突然不能运行了,找了很多文章总算解决问题了O(∩_∩)O哈哈~,希望下次不要浪费这么多时间搞这么坑的问题了.   mac上MySQLdb ...