中位数计数

Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2064 Accepted Submission(s): 716

Problem Description
中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数。

现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。

Input
多组测试数据

第一行一个数n(n≤8000)

第二行n个数,0≤每个数≤109,

Output
N个数,依次表示第i个数在多少包含其的区间中是中位数。

Sample Input
5
1 2 3 4 5Sample Output
1 2 3 2 1

非常巧妙的思路,佩服
当找到 a[i] 时分三种情况考虑:
1:先去找a[i]的左边,如果左边扫过去时大于a[i]的书出现的次数与小于a[i]的数出现的次数相同,用一个num做计数器,num++和num–,每次num=0时,a[i]就是当前这个序列的中位数,计数器+1。
2:右边亦如此。
3:接下来是左右两边,用一个计数器记录num出现的次数,当左边为num时,右边就为-num,所以相加即为答案,为了防止数组越界,加个大数。

大佬不愧是大佬这思路,蒻苣 ┭┮﹏┭┮

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;
const int N = 8000;
int a[N];
int ans[N],cnt[20000];
int main()
{int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%d",&a[i]);ans[i]=1; ///自己也算自己的中位数,所以初始化为1}for(int i=0;i<n;i++){memset(cnt,0,sizeof(cnt));int num = 0;for(int j=i-1;j>=0;j--){ ///往左区间找,看有多少满足a[i]是中位数的if(a[j]<a[i]) num++;else num--;if(num==0) ans[i]+=1; ///如果num=0,则证明此时的小于a[i]的数和大于a[i]的数数量相同,a[i]是中位数cnt[N+num]++;///记录不满住的num的状态的个数,与右区间的合并,形成符合条件的解}num = 0;for(int j=i+1;j<n;j++){if(a[j]<a[i]) num++;else num--;if(num==0) ans[i]+=1;ans[i]+=cnt[N-num];///将左边不满足,右边不满足的合并为满足的++}}for(int i=0;i<n;i++){if(i!=n-1) printf("%d ",ans[i]);else printf("%d\n",ans[i]);}}return 0;
}

HDU 5701 中位数计数(思维+暴力)相关推荐

  1. HDU 5701:中位数计数

    中位数计数 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub ...

  2. 51Nod1682 中位数计数【中位数】

    1682 中位数计数 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平 ...

  3. HDU5701 中位数计数【中位数+水题】

    中位数计数 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub ...

  4. L. Ray in the tube(思维暴力)

    L. Ray in the tube(思维&暴力) 思路:思维+暴力. 记:A,BA,BA,B的横坐标距离为xxx. 1.当xxx为奇数时,显然x=1x=1x=1包含所有奇数的情况. 2.当x ...

  5. HDU 2920 分块底数优化 暴力

    其实和昨天写的那道水题是一样的,注意爆LL $1<=n,k<=1e9$,$\sum\limits_{i=1}^{n}(k \mod i) = nk - \sum\limits_{i=1}^ ...

  6. hdu_5701_中位数计数

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5701 题意:不解释 题解:n^2的方法:sum[j]表示当前枚举的数到第j个数形成的区间里当前数偏离中 ...

  7. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  8. HDU 5696 区间的价值 暴力

    区间的价值 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5696 Description 我们定义"区间的价值"为一段区间的最大 ...

  9. Sasha and a Bit of Relax K倍区间 (前缀和异或 前缀和计数 思维)

    (29条消息) CodeForces - 1109A Sasha and a Bit of Relax(思维+异或和,好题)_Frozen_Guardian的博客-CSDN博客 Sasha and a ...

最新文章

  1. static interface method calls are not supported at language level 1.6
  2. 链表删除最小值,倒叙
  3. GlusterFS配置管理(五)
  4. sharepoint2013保存当前输入的列表
  5. 2017-9-15-Linux移植:WinSCP软件 SSH Server开启
  6. ATL学习笔记〔一〕
  7. 分析windows宿主机Ping不通linux虚拟机的其中一种情况
  8. 无线运维——J2ME和WAP运维方式的优缺点
  9. 劳动合同中不写薪资?
  10. 已火 2 年,Service Mesh究竟给微服务带来了什么?
  11. 解决CentOS 中部署JasperReport时出错的问题。错误:net.sf.jasperreports.engine.util.JRFontNotFoundException: Font '宋体
  12. WPF DataGrid 和LINQ to SQL示例程序之一 (提供源代码下载)
  13. 【报告分享】5G网络切片分级白皮书.pdf(附下载链接)
  14. python网络爬虫学习笔记(十):数据存储
  15. Nginx中常用的指令配置详解
  16. python神经网络库识别验证码_基于TensorFlow 使用卷积神经网络识别字符型图片验证码...
  17. Graylog日志管理系统---搜索查询方法使用简介
  18. Portlet开发指南第三章
  19. 编译原理c语言词法分析器,用C语言实现一个真正的词法分析器
  20. h264html实时播放,H5播放H264之websocket

热门文章

  1. contextmenu的使用
  2. android contextmenu 自定义,RecyclerView+ContextMenu实现菜单项
  3. (Deep_sort)代码复现及理解笔记➕deep_sort_app.py代码理解
  4. TCP/IP协议族(第四版)已出,不愧是世界计算机优秀畅销精选书籍
  5. 农业知识图谱搭建和遇到的问题
  6. Mac QQ 1.1.0 : qq表情插件失效解决方案
  7. C语言入门(七)——结构体
  8. 早产儿是什么原因造成的?这些事情宝妈要注意
  9. hisi3559av100 烧录镜像
  10. Brooks曾经在UMLChina网站留过言-回忆和送别(1)