CF1486D Max Median
CF1486D Max Median
题意:
给定一个长度为 n 的序列 a,求所有长度 ≥k 的连续子序列中,中位数的最大值。定义中位数是一个长度为 x 的序列升序排序后的第 ⌊x+12⌋\left\lfloor\frac{x+1}{2}\right\rfloor⌊2x+1⌋位的值。
题解:
我第一反应是二分去判断,但是不知道该怎么判断中位数这个条件
题目中定义的中位数的排序后最中间的数,假设中位数为mid,也就是说有一半以上的数>=mid,那二分不就好判断了,我们二分mid值,然后将所有小于mid的值赋为-1,大于等于mid的赋值为1,现在问题就是是否存在一个区间长度大于等于k的区间值>=0
我们用sum来记录赋值后的前缀和,用minn[i]表示min(sum[j]),j∈[1,i]min(sum[j]),j∈[1,i]min(sum[j]),j∈[1,i]。这样就是判断sum[i]-sum[i-k]是否大于等于0
代码:
// Problem: D. Max Median
// Contest: Codeforces - Codeforces Round #703 (Div. 2)
// URL: https://codeforces.com/contest/1486/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// By Jozky#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{#ifdef ONLINE_JUDGE
#elsestartTime= clock();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn= 2e5 + 9;
int a[maxn];
int n, k;
int b[maxn];
int sum[maxn];
int minn[maxn];
bool check(int x)
{for (int i= 1; i <= n; i++) {b[i]= (a[i] >= x) ? 1 : -1;}minn[0]= INF_int;for (int i= 1; i <= n; i++) {sum[i]= sum[i - 1] + b[i];minn[i]= min(minn[i - 1], sum[i]);}minn[0]=0;for (int i= k; i <= n; i++) {if (sum[i] - minn[i - k] > 0)return 1;}return 0;
}
int main()
{//rd_test();cin >> n >> k;for (int i= 1; i <= n; i++) {cin >> a[i];}int l= 0, r= n;int ans= -1;while (l < r) {int mid= l + r >> 1;if (check(mid)) {ans= mid;l= mid;}elser= mid - 1;}cout << ans << endl;//Time_test();
}
CF1486D Max Median相关推荐
- CodeForces - 1486D Max Median(二分+最长连续子段和)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在从长度至少为 kkk 的连续子段中,找到最大的中位数 题目分析:做过平均数的模型:POJ - 2018 Best Cow Fences ...
- Max Median
Max Median 题目链接:点这里 题目大意:给你n个数和一个范围k,让你从n个数里连续选不小于k个数,然后进行排序找中位数,让你求出最大的中位数. 题解:这是很有意思的一道题,我们可以用二分来进 ...
- Codeforces Round #703 (Div. 2) D. Max Median
题意:给一个长度为n的序列,对于一个区间长度不小于k的子区间,中位数为这个区间排序后的第(k+1)/2个数字.现在求所有的长度不小于k的子区间,中位数的最大值是多少. 思路:首先要想到,对于一个中位数 ...
- Codeforces Round #703 (Div. 2) D . Max Median 二分 +思维
传送门 题意: 给定一个数组和k,求一段连续区间中位数最大值,连续区间长度>=k. 如果=k的话可以直接秒了,这里是>=k,我们可以通过二分让后利用>=k这个条件来检查答案. 二分中 ...
- median函数 oracle9i,oracle10g学习笔记
1.简介 1.1.sql:Structured Query Language 结构化查询语言 1.2.windows在目录路径中使用反斜线\,unix和linux使用正斜线/ 1.3.Number(a ...
- Oracle 聚合函数(Aggregate Functions)说明
Oracle Aggregate Functions用过很多,官网的说明如下: Aggregate Functions http://docs.oracle.com/cd/E11882_01/serv ...
- locust压测工具:测试信息输出与分布式模式
locust压测环境描述 本文环境python3.5.2 locust版本0.9.0 locust测试信息输出与分布式模式 本文将主要分析两个方面的内容: 1.locust在启动运行在跑测试用例的时候 ...
- Codeforces Round #703 (Div. 2)(A ~ F)超高质量题解【每日亿题2 / 19】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A. Shifting Stacks B - Eastern Exhibition C1 - G ...
- 求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍
1.4 函数用法的简单介绍 1.4.1什么是函数 似乎很多人一听到函数这个词就会想到数学中的某个概念,然后对于恐惧数学的同学就开始打退堂鼓.在matlab当中到处可以用到函数,它的出现可以让我们用很简 ...
最新文章
- [NOI2005]维护数列
- Bzoj1123 Blockade
- 一篇文章搞懂JavaScript运行机制
- php敏感字符串过滤_PHP代码审计入门:常见的危险函数和审计点
- 告别程序员生涯,一点感慨,与诸君共勉(转)
- python运算符中用来计算整商的是什么_零基础学python,看完这篇文章,你的python基础就差不多了...
- 第39天-进程 _1(2013.09.11)
- API 应该享受版权保护吗?
- php 手册中show的使用,文档工具--showdoc(一)
- TortoiseSVN修改服务器地址的方法
- 机器学习之问题建模(一)
- Project 3 :Python爬虫源码实现抓取1000条西刺免费代理IP-HTTPS并保存读取
- 电力拖动自动控制系统复习(四)
- 使用计算机组成原理全加器设计,杭电计算机组成原理全加器设计实验1
- FIL是否值得长期持有以及未来评估
- 网页上的内容无法选中复制该如何解决?
- java 23种设计模式 04 单例模式
- B.系数 (Lucas定理)
- java有声小说如何开发_怎么才能做有声小说播音?有声书主播如何训练?
- AI中数据标注(Labeling)的介绍
热门文章
- 2020年高考数学试题难吗?历史上最难数学卷不是2003!
- 快别发语音了! | 今日最佳
- 史上最硬核文科生,擅长解决数学难题,却视考试成为终生噩梦
- java 有没有with语句_Java中的try-with-resources语句
- java web容器_Java Web容器安全
- mysql xa 演示_mysql的XA事务恢复过程详解
- linux 信号_Linux中的信号处理机制 [四]
- php 获取对象所有成员变量,PHP成员变量获取对比
- 未发现android设备,Brother iPrintScan 应用程序上出现错误信息“未发现支持设备”(Android™ 智能手机)。...
- 数据结构——基于 Dijsktra 算法的最短路径求解