当前位置: 首页 > news >正文

Running Median

题目:

Description

For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far.
Input

The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. The first line of each data set contains the data set number, followed by a space, followed by an odd decimal integer M, (1 ≤ M ≤ 9999), giving the total number of signed integers to be processed. The remaining line(s) in the dataset consists of the values, 10 per line, separated by a single space. The last line in the dataset may contain less than 10 values.
Output

For each data set the first line of output contains the data set number, a single space and the number of medians output (which should be one-half the number of input values plus one). The output medians will be on the following lines, 10 per line separated by a single space. The last line may have less than 10 elements, but at least 1 element. There should be no blank lines in the output.

Sample Input

3
1 9
1 2 3 4 5 6 7 8 9
2 9
9 8 7 6 5 4 3 2 1
3 23
23 41 13 22 -3 24 -31 -11 -8 -7
3 5 103 211 -311 -45 -67 -73 -81 -99
-33 24 56

Sample Output

1 5
1 2 3 4 5
2 5
9 8 7 6 5
3 12
23 23 22 22 13 3 5 5 3 -3
-7 -3

题目大意:

依次给出n个数字,每输入一个奇数则输出即时中位数。(共有(n+1)/2个)

解题思路:

对顶堆,即用两个堆,一个大根堆一个小根堆。每次比较两个堆的堆顶,如果不相等就交换堆顶,否则堆顶即为所要求的中位数。
然后还是一如既往的使用C++的骚库

Accepted code:

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<cctype>

inline void read(int &x)
{
    char c=getchar(); int f=1;x=0;
    while(!isdigit(c)) {if (c=='-') f=-1;c=getchar();}
    while(isdigit(c)) {x=x*10+c-48;c=getchar();}
    x*=f; return;
}
std::priority_queue <int> lq,sq;
//lq大根堆,sq小根堆
int main()
{
    int n,t,x,a,b,cnt;
    read(t);
    while(t--)
    {
        read(cnt); read(n);
        while(lq.size()) lq.pop();
        while(sq.size()) sq.pop();
        printf("%d %d\n",cnt,(n+1)/2);
        for(int i=1;i<=n;i++)
        {
            read(x);
            lq.push(x),sq.push(-x);
            if(i%2==0) continue;
            while(lq.top()!=-sq.top())
            {
                a=lq.top();lq.pop();
                b=-sq.top();sq.pop();
                sq.push(-a);lq.push(b);
            }
            printf("%d ",lq.top());
            if(((i+1)/2)%10 == 0) puts("");
            else if((n%2==1&&i==n)||(n%2==0&&i==n-1))
                     puts("");
        }
    }
    return 0;
}

转载于:https://www.cnblogs.com/Juruo-HJQ/p/9821878.html

相关文章:

  • Java中getResourceAsStream的用法
  • Rust 2018临近:设法从Rust 2015过渡
  • 通过XAML Islands使Windows桌面应用程序现代化
  • apscheduler -定时任务
  • springmvc入门之映射处理器(二)
  • Bytom交易说明(账户管理模式)
  • 将java Bean转换成数据库Schema
  • 罗辑思维首席架构师:Go微服务改造实践
  • MVVM
  • 目标检测算法(1)目标检测中的问题描述和R-CNN算法
  • LVS + Keepalived 高可用群集部署
  • 【大数据】MapTask并行度和切片机制
  • WSTMart开源商城
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • 微服务架构eureka集群高可用配置
  • centos安装java运行环境jdk+tomcat
  • Iterator 和 for...of 循环
  • Java多态
  • jquery ajax学习笔记
  • leetcode46 Permutation 排列组合
  • Lucene解析 - 基本概念
  • ng6--错误信息小结(持续更新)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PermissionScope Swift4 兼容问题
  • spring + angular 实现导出excel
  • vue--为什么data属性必须是一个函数
  • 阿里云应用高可用服务公测发布
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 电商搜索引擎的架构设计和性能优化
  • 给初学者:JavaScript 中数组操作注意点
  • 来,膜拜下android roadmap,强大的执行力
  • 全栈开发——Linux
  • 微信支付JSAPI,实测!终极方案
  • 小而合理的前端理论:rscss和rsjs
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一个完整Java Web项目背后的密码
  • 怎么把视频里的音乐提取出来
  • - 转 Ext2.0 form使用实例
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​configparser --- 配置文件解析器​
  • ​Linux·i2c驱动架构​
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #{}和${}的区别?
  • #14vue3生成表单并跳转到外部地址的方式
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (独孤九剑)--文件系统
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (算法)Game
  • (原)Matlab的svmtrain和svmclassify
  • (转)nsfocus-绿盟科技笔试题目