51 nod 1682 中位数计数
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1682
中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数。
现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。
第一行一个数n(n<=8000)
第二行n个数,0<=每个数<=10^9
N个数,依次表示第i个数在多少包含其的区间中是中位数。
5
1 2 3 4 5
1 2 3 2 1
题解:一个数x如果在区间[l,r]中是中位数,用a[i]表示在区间[1,i]中比x小的数的数量,用b[i]表示在区间[1,i]中比x小的数的数量,则有a[r]-a[l]==b[r]-b[l],将之转换即得a[r]-b[r]==a[l]-b[l],然后复杂度O(n^2)就能做了。
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int x[N], a[N*], ans[N];
int main() {
int n, i, j, sum;
scanf("%d", &n);
for(i = ; i <= n; ++i) scanf("%d", &x[i]);
for(i = ; i <= n; ++i) {
memset(a, , sizeof(a));
a[] = ;
sum = ;
for(j = ; j < i; ++j) {
if(x[j] < x[i]) sum++;
else if(x[j] > x[i]) sum--;
a[+sum]++;
}
for(j = i; j <= n; ++j) {
if(x[j] < x[i]) sum++;
else if(x[j] > x[i]) sum--;
ans[i] += a[+sum];
}
}
for(i = ; i < n; ++i) printf("%d ", ans[i]);
printf("%d\n", ans[n]);
return ;
}
51 nod 1682 中位数计数的更多相关文章
- 51 nod 1610 路径计数(Moblus+dp)
1610 路径计数 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 路径上所有边权的最大公约数定义为一条路径的值. 给定一个有向无环图.T次修改操作,每次修改一 ...
- 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] ...
- 51nod 1682 中位数计数(差分统计)
中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数. 首先,显 ...
- 51 Nod 1352 集合计数
大致题意:求ax+by=n+1的正数解的个数. 先看下面: 相信看过了通解的参数表示后已经知道怎么解了,贴代码: #include <bits/stdc++.h> #define ll l ...
- hdu-5701 中位数计数(中位数)
题目链接: 中位数计数 Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有nn个数,每个 ...
- 51 nod 1439 互质对(Moblus容斥)
1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开 ...
- 51 nod 1495 中国好区间
1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...
- 51 nod 1427 文明 (并查集 + 树的直径)
1427 文明 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 安德鲁在玩一个叫“文明”的游戏.大妈正在帮助他. 这个游 ...
随机推荐
- dev中文本框等获取焦点事件
<ClientSideEvents GotFocus="GotFocus" /> editContract.SetFocus()//设置文本框等的焦点 function ...
- oracle网页客户端工具
Oracle数据库的管理相较于其他数据库,是比较麻烦的,客户端工具的安装都要花一些时间,目前有一款treesoft软件,通过网页的方式管理Oracle. 功能包括:数据库的展示,库表的展示,表字段结构 ...
- ASP.NET MVC传递Model到视图的多种方式总结(二)__关于ViewBag、ViewData和TempData的实现机制与区别
在ASP.NET MVC中,视图数据可以通过ViewBag.ViewData.TempData来访问,其中ViewBag 是动态类型(Dynamic),ViewData 是一个字典型的(Diction ...
- Node.js从入门到实战ECMAScript6一页纸总结(很大的一页纸)
一.ES5/ES6和babel ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化,现在的浏览器已经相当于完全实现了这个标准.ECMAScript6,即ES6 ...
- 第二十二天- 序列化 pickle json shelve
# 序列化:存储或传输数据时,把对象处理成方便存储和传输的数据格式,这个过程即为序列化# Python中序列化的三种方案:# 1.pickle python任意数据——>bytes写入⽂件:写好 ...
- flutter控件之ListView滚动布局
ListView即滚动列表控件,能将子控件组成可滚动的列表.当你需要排列的子控件超出容器大小,就需要用到滚动块. import 'package:flutter/material.dart'; cla ...
- Claims-based认证解析
Claims-based认证相关的两个重要的类ClaimsIdentity以及ClaimsPrincipal解析 ClaimsIdentity以及ClaimsPrincipal是.NET下Claims ...
- 通过ES6实现的Ajax类
个人学习用途而已,仅供参考. class Ajax { constructor(xhr) { xhr = window.XMLHttpRequest ? new XMLHttpRequest() : ...
- DELETE语句总结
一.基本语句 1.SQL DELETE 语法 DELETE FROM table_name WHERE condition; 请注意 删除表格中的记录时要小心!注意SQL DELETE 语句中的 WH ...
- 7.log4j2的使用
一.简介 log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等.如 ...