码农知识堂 - 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. }

  • 相关阅读:
    如何做好测试?(五)性能测试(Performance Testing, PT)
    HTML5期末考核大作业 基于HTML+CSS+JavaScript沪上美食(9页)
    8.11学习日志 后缀数组+DLX
    vue2添加自定义节流指令
    linux安装Gnome
    python3-python中的多任务处理利器-协程的使用(一),asyncio模块的使用
    客快物流大数据项目(七十七):使用Impala对kudu更改表属性操作
    springboot+vue+elementUI304springboot305springboot农机电招租赁预约平台#毕业设计
    三、Typora软件的介绍及安装
    数据结构与算法【红黑树】的Java实现+图解
  • 原文地址:https://blog.csdn.net/WQhuanm/article/details/128168038
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号