码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 求中位数,方差(小E的动态序列)


    1,题目:小E的动态序列

    思路

    平均数,好说,pass

    中位数:我们利用中间的思想,可以构造一个最大堆与一个最小堆,接下来维护好他即可

    方差:无脑循环必被t,把公式拆开发现累积即可(把(ai-a|)^2/i的累积拆开就是sum2/i-2*sum1*a|/i+a|*a|)(注意,最后平均数平方是不用除i,因为是i个平均数累加再除i,等于没有累加)

    众数,好说,pass

    1. #include
    2. using namespace std;
    3. #define ll long long
    4. #define endl "\n"
    5. #define int long long
    6. //---------------------------------------------------------------------------------------------------------------------//
    7. //---------------------------------------------------------------------------------------------------------------------//
    8. const int INF = 0x3f3f3f3f;
    9. const int N = 2e5 + 100;
    10. void mysolve()
    11. {
    12. int n, x;
    13. priority_queue<int>q1;//大堆,存小值(左区间)
    14. priority_queue<int, vector<int>, greater<int>>q2; //小堆(右区间)
    15. mapmp;
    16. cin >> n;
    17. ll sum1 = 0, sum2 = 0; //sum1累积元素和,sum累积元素平方和(后面方差可以用)
    18. int num = 0, t = 0;
    19. for (int i = 1; i <= n; ++i)
    20. {
    21. cin >> x;
    22. sum1 += x, sum2 += x * x;
    23. mp[x]++;
    24. if (mp[x] >= num)
    25. {
    26. if (mp[x] > num)num = mp[x], t = x;
    27. else t = max(t, x);
    28. }
    29. //接下来维护两个堆
    30. q1.push(x);
    31. if (q2.size() && q1.top() > q2.top())//大堆的最大比小堆的最小还要大,交换
    32. {
    33. int maxn = q1.top(), minn = q2.top();
    34. q1.pop(), q2.pop();
    35. q1.push(minn), q2.push(maxn);
    36. }
    37. if (q1.size() > q2.size() + 1) //始终维持两个堆元素量差值1
    38. {
    39. int tmp = q1.top();
    40. q1.pop();
    41. q2.push(tmp);
    42. }
    43. if (i & 1)
    44. {
    45. double k = sum1 * 1.0 / i; //除法不要忘记1.0
    46. double cha = sum2 * 1.0 / i - 2 * sum1 * k * 1.0 / i + k * k;
    47. printf("%.7lf %.7lf %lld %lld\n", k, cha, q1.top(), t);
    48. }
    49. }
    50. }
    51. int32_t main()
    52. {
    53. ll t;
    54. cin >> t;
    55. while (t--)
    56. {
    57. mysolve();
    58. }
    59. system("pause");
    60. return 0;
    61. }

  • 相关阅读:
    .NET 数据库大数据操作方案(插入、更新、删除、查询 、插入或更新)
    【Leetcode】2471. Minimum Number of Operations to Sort a Binary Tree by Level
    ①常用API----Math
    通过Moonbeam路由流动性,如何转移token至Hydra?
    JavaScript原型模式:实现对象共享属性和方法!
    《向量数据库指南》——Range Search 使用方法和参数检查
    MATLAB环境下基于离散小波变换的心电信号伪影去除及PQRST波检测
    C语言小游戏——扫雷小游戏
    窗口闪烁&QWidget多窗口鼠标透传&QWidget底色设置
    初识C语言
  • 原文地址:https://blog.csdn.net/WQhuanm/article/details/128168038
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号