1682 中位数计数
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

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

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

Input
  1. 第一行一个数n(n<=8000)
  2. 第二行n个数,0<=每个数<=10^9
Output
  1. N个数,依次表示第i个数在多少包含其的区间中是中位数。
Input示例
  1. 5
  2. 1 2 3 4 5
Output示例
  1. 1 2 3 2 1
  1. /*
  2. 51nod 1682 中位数计数
  3.  
  4. problem:
  5. 给你n个数,求出每个数在多少个包含其的区间中是中位数
  6.  
  7. solve:
  8. 如果a[i]在区间[l,r]是中位数,那么区间中大于a[i]和小于a[i]的数一样多. up[r]-up[l] == down[r]-down[l]
  9. --> up[r]-down[r] == up[l]-down[l]. 就变成了当前i前面有多少个数up-down与其相等.
  10. 所以可以从中间往两边记录并统计.
  11.  
  12. hhh-2016/09/03-21:08:16
  13. */
  14. #pragma comment(linker,"/STACK:124000000,124000000")
  15. #include <algorithm>
  16. #include <iostream>
  17. #include <cstdlib>
  18. #include <cstdio>
  19. #include <cstring>
  20. #include <vector>
  21. #include <math.h>
  22. #include <queue>
  23. #include <set>
  24. #include <map>
  25. #define lson i<<1
  26. #define rson i<<1|1
  27. #define ll long long
  28. #define clr(a,b) memset(a,b,sizeof(a))
  29. #define scanfi(a) scanf("%d",&a)
  30. #define scanfs(a) scanf("%s",a)
  31. #define scanfl(a) scanf("%I64d",&a)
  32. #define scanfd(a) scanf("%lf",&a)
  33. #define key_val ch[ch[root][1]][0]
  34. #define eps 1e-7
  35. #define inf 0x3f3f3f3f3f3f3f3f
  36. using namespace std;
  37. const ll mod = 1000000007;
  38. const int maxn = 8080;
  39. const double PI = acos(-1.0);
  40. int n;
  41. ll num[maxn*2];
  42. int a[maxn];
  43.  
  44. ll cal(int id)
  45. {
  46. int upcnt =0 ;
  47. int docnt = 0;
  48. memset(num,0,sizeof(num));
  49. num[8000] = 1;
  50. for(int i = id-1; i >= 1; i--)
  51. {
  52. if(a[i] > a[id]) upcnt++;
  53. if(a[i] < a[id]) docnt++;
  54. num[upcnt-docnt+8000] ++;
  55. }
  56. ll ans = 0;
  57. upcnt = docnt = 0;
  58. for(int i = id; i <= n; i++)
  59. {
  60. if(a[i] > a[id]) upcnt++;
  61. if(a[i] < a[id]) docnt++;
  62. ans += num[docnt-upcnt+8000];
  63. }
  64. return ans;
  65. }
  66.  
  67. int main()
  68. {
  69. while(scanfi(n) != EOF)
  70. {
  71. for(int i = 1; i<= n; i++)
  72. scanfi(a[i]);
  73.  
  74. for(int i = 1; i<= n; i++)
  75. {
  76. printf("%I64d%c",cal(i),i == n ? '\n':' ' );
  77. }
  78. }
  79. return 0;
  80. }

  

51nod 1682 中位数计数的更多相关文章

  1. 51nod 1682 中位数计数(前缀和)

    51nod 1682 中位数计数 思路: sum[i]表示到i为止的前缀和(比a[i]小的记为-1,相等的记为0,比a[i]大的记为1,然后求这些-1,0,1的前缀和): hash[sum[i]+N] ...

  2. 51nod 1682 中位数计数(差分统计)

    中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数. 首先,显 ...

  3. 51 nod 1682 中位数计数

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1682 1682 中位数计数 基准时间限制:1 秒 空间限制: ...

  4. hdu-5701 中位数计数(中位数)

    题目链接: 中位数计数 Problem Description   中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数. 现在有nn个数,每个 ...

  5. hdu 5701 中位数计数 思路题

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

  6. HDU 5701 中位数计数 百度之星初赛

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

  7. HDU 5701 ——中位数计数——————【思维题】

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

  8. [51Nod 1222] - 最小公倍数计数 (..怎么说 枚举题?)

    题面 求∑k=ab∑i=1k∑j=1i[lcm(i,j)==k]\large\sum_{k=a}^b\sum_{i=1}^k\sum_{j=1}^i[lcm(i,j)==k]k=a∑b​i=1∑k​j ...

  9. HDU 5701 中位数计数

    这题真的很恶心,做了一天,最后问学长,才懂题意是什么,原来我一直都没读懂题.这我真的就无语了,你的题意多两句话会死啊?你测试样例多两个例子就不行啊?真蛋疼,题意都不懂,还做个shi? 题里说的是区间, ...

随机推荐

  1. C语言程序设计第四次作业——选择结构(2)

    Deadline: 2017-11-5 22:00 一.学习要点 掌握switch语句 掌握字符常量.字符串常量和字符变量 掌握字符型数据的输入输出 二.实验内容 完成PTA中选择结构(2)的所有题目 ...

  2. 201621123040《Java程序设计》第十一周学习总结

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 2.1源代码阅读:多线程程序BounceThread 2.1.1BallRunnable类有什么用?为什 ...

  3. Alpha冲刺Day4

    Alpha冲刺Day4 一:站立式会议 今日安排: 我们把项目大体分为四个模块:数据管理员.企业人员.第三方机构.政府人员.完成了数据库管理员模块.因企业人员与第三方人员模块存在大量的一致性,故我们团 ...

  4. win7 Anaconda 安装 scrapy模块

    之前用了很多方法,都安装不成功,今天终于成功了..说下方法.. anaconda的清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ ...

  5. 亚马逊的PuTTY连接AWS出现network error connection refused,终极解决方案。

    使用PuTTY连接AWS的时候,一直出现network error connection refused.百度了这个问题,大家都说是SSH要设置成22.但是我已经设置过了,为什么还是遇到这个问题呢? ...

  6. Flask 学习 五 电子邮件

    pip install mail from flask_mail import Mail # 邮件配置 app.config['MAIL_SERVER']='smtp.qq.com' app.conf ...

  7. Cypher语法

    cypher是neo4j官网提供的声明式查询语言,非常强大,用它可以完成任意的图谱里面的查询过滤,我们知识图谱的一期项目 基本开发完毕,后面会陆续总结学习一下neo4j相关的知识.今天接着上篇文章来看 ...

  8. 洛谷 P3797 妖梦斩木棒

    https://www.luogu.org/problem/show?pid=3797 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了 ...

  9. codevs 3981 动态最大子段和

    3981 动态最大子段和 http://codevs.cn/problem/3981/    题目等级 : 钻石 Diamond   题目描述 Description 题目还是简单一点好... 有n个 ...

  10. MariaDB/MySQL存储过程和函数

    本文目录:1.创建存储过程.函数 1.1 存储过程的IN.OUT和INOUT2.修改和删除存储过程.函数3.查看存储过程.函数信息 在MySQL/MariaDB中,存储过程(stored proced ...