hdu5701-中位数计数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5701
题目:
现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。
第二行n个数,0≤每个数≤10^9
题目分析:这题显然满足条件的区间必是含奇数个数的区间,对于每个数,先往右扫一遍,求得其右边比其大的和比其小的数的个数的差x,然后再往左扫一遍,求其左边比起小的数和比起大的数的差,若一个数在这个区间为中位数,则若其右边比它大的比比它小的多x(有点绕),则其左边相反小的要比大的多x,这样x才能正好在中间位置,用一个数组记录一下差值为某个数的个数即可,注意要算上这个数自己。
注意:输入的n个数,是无序数列,这里也不能对其进行排序后再判断。
原文:https://blog.csdn.net/tc_to_top/article/details/51477047
- /* HDU5701 中位数计数 */
- #include <iostream>
- #include <cstring>
- using namespace std;
- const int MAXN = ;
- int v[MAXN+], count[*(MAXN+)];
- int main()
- {
- int n, ans, cnt;
- while(cin >> n) {
- for(int i=; i<=n; i++)
- cin >> v[i];
- for(int i=; i<=n; i++) {
- memset(count, , sizeof(count));
- cnt = ;
- count[n]++;
- for(int j=; j<i; j++) {
- if(v[i - j] < v[i])
- cnt--;
- else
- cnt++;
- count[n + cnt]++;
- }
- cnt = ;
- ans = count[n];
- for(int j=; i+j<=n; j++) {
- if(v[i+j] < v[i])
- cnt--;
- else
- cnt++;
- ans += count[n - cnt];
- }
- if(i==n)
- cout << ans << endl;
- else
- cout << ans << " ";
- }
- }
- return ;
- }
hdu5701-中位数计数的更多相关文章
- hdu-5701 中位数计数(中位数)
题目链接: 中位数计数 Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有nn个数,每个 ...
- ACM学习历程—HDU5701 中位数计数(中位数 && 计数排序)
http://acm.hdu.edu.cn/showproblem.php?pid=5701 这是这次百度之星初赛2B的第六题.之前白山云做过类似的题,省赛完回来,我看了一下大概就有这样的思路:首先枚 ...
- 百度之星 hdu5701 中位数计数
http://acm.hdu.edu.cn/showproblem.php?pid=5701 给出一个序列,取其中的任何一个连续的序列,该序列的数从小到大排列,待更新,,, #include<i ...
- 51nod 1682 中位数计数
1682 中位数计数基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均 ...
- 51nod 1682 中位数计数(前缀和)
51nod 1682 中位数计数 思路: sum[i]表示到i为止的前缀和(比a[i]小的记为-1,相等的记为0,比a[i]大的记为1,然后求这些-1,0,1的前缀和): hash[sum[i]+N] ...
- 51 nod 1682 中位数计数
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1682 1682 中位数计数 基准时间限制:1 秒 空间限制: ...
- hdu 5701 中位数计数 思路题
中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- HDU 5701 中位数计数 百度之星初赛
中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...
- HDU 5701 ——中位数计数——————【思维题】
中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- HDU 5701 中位数计数
这题真的很恶心,做了一天,最后问学长,才懂题意是什么,原来我一直都没读懂题.这我真的就无语了,你的题意多两句话会死啊?你测试样例多两个例子就不行啊?真蛋疼,题意都不懂,还做个shi? 题里说的是区间, ...
随机推荐
- Codeforces Round #551 (Div. 2) 题解
CF1153A 直接做啊,分类讨论即可 #include<iostream> #include<string.h> #include<string> #includ ...
- Java项目模板设置
/** * * @ClassName ${PACKAGE_NAME}.${NAME} * @description ${DESCRIPTION} * @author lisongyu * @creat ...
- tcpdump在linux上的常见用法
https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html tcpdump -i [interface] -w cap.cap ...
- Centos7的目录结构
CentOS 目录结构 : /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执行二进制 ...
- kubernetes云平台管理实战: pod资源共享(三)
一.共享容器IP地址 1.查看容器进程 [root@k8s-node1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS ...
- FTP主动及被动模式效果图
- apache中 sed 指定文件中某字符串增加行
#!/bin/bash #在 servername 域名 字符串后面添加指定字符串 servername=`grep ServerName httpd-vhosts.conf |awk '{print ...
- 1.在虚拟机中安装Linux中的CentOS7系统
1. 虚拟机的创建:如下图,可在右侧窗口中创建新的虚拟机,也可以在文件菜单中新建虚拟机,或者使用快捷键新建 这里选择“自定义(高级) ”,然后进入“下一步”设置 这里是选择虚拟机硬件的美容性的,默认就 ...
- decltype类型指示符
C++11新标准引入第二种类型说明符decltype,它的作用是选择并返回操作数的数据类型. 编译器分析表达式并得到它的类型,却不实际计算表达式的值: decltype(f()) sum = x;// ...
- 微信小程序scroll-view(或者其他view) 计算高度 px转rpx有关
wx.getSystemInfo({ success: function (res) { that.globalData.winWidth = res.windowWidth; that.global ...