每天有10亿人的登录,用户登出时,会输出登入时间和登出时间,平均在线时长为1小时,如何快速的求某一秒钟内的在线人数。

思路:可以用线段树来处理。在知道(loginTime,logoutTime)时,将区间(loginTime, logoutTime-1)加1。

具体的线段树代码 如下:

#pragma onceconst int N = 2 * 24 * 3600;#define LSON(o) (o << 1)
#define RSON(o) ((o << 1) + 1)class Node
{
public:void setNode(int l, int r, int add, int sum){this->l = l;this->r = r;this->add = add;this->sum = sum;}private:friend class RMQ;int l, r;int add;int sum;
};Node node[N];class RMQ
{
public:RMQ(){tree = node;}void build(int o, int left, int right){if (left == right){tree[o].setNode(left, right, 0, 0);}else{int mid = (left + right) >> 1;build(o * 2, left, mid);build(o * 2 + 1, mid + 1, right);tree[o].l = left; tree[o].r = right; tree[o].add = 0; tree[o].sum = 0;}}void update(int o, int left, int right, int v){if (left <= tree[o].l && right >= tree[o].r){tree[o].add += v;}else{int mid = (tree[o].l + tree[o].r) >> 1;if (left <= mid) update(LSON(o), left, right, v);if (right > mid) update(RSON(o), left, right, v);}maintain(o);}int query(int o, int left, int right, int add){if (left <= tree[o].l && right >= tree[o].r){return tree[o].sum + add * (tree[o].r - tree[o].l + 1);}else{int mid = (tree[o].l + tree[o].r) >> 1;int result = 0;if (left <= mid){result += query(LSON(o), left, right, add + tree[o].add);}if (right > mid){result += query(RSON(o), left, right, add + tree[o].add);}return result;}}private:void pushdown(int o){if (tree[o].add > 0){tree[LSON(o)].add += tree[o].add;tree[RSON(o)].add += tree[o].add;tree[o].add = 0;}}void maintain(int o){if (tree[o].r > tree[o].l){tree[o].sum = tree[LSON(o)].sum + tree[RSON(o)].sum;}tree[o].sum += tree[o].add * (tree[o].r - tree[o].l + 1);}Node* tree;};

统计某一时刻的在线人数相关推荐

  1. 如何统计网站的在线人数呢?

    如何统计网站的在线人数呢? 首先很简单的思想就是,如果只针对会员用户进行统计,在登录登出时加判断,然后维护一个表(或者其他存储方式)来存储在线会员即可. 但是有个问题就是,对于正常退出的会员当然可以使 ...

  2. 统计在线人数及登录IP

    统计在线人数及ip jsp页面 <%--Created by IntelliJ IDEA.User: AdministratorDate: 2019/11/29Time: 16:26To cha ...

  3. html页面统计在线人数,统计在线人数couter

    如何运用内置对象session和application对象实现统计在线人数 首先创建一个全局应用程序类Global.asax   protected void Application_Start 这几 ...

  4. 用PHP来统计在线人数的四个方法详解

    1 用表统计方式 用数据表统计在线人数,这种方式只能用在并发量不大的情况下. 首先我们先新建表:user_login 编辑 user_login 表 模拟用户登录,不存在用户就存入表,存在的则更新登录 ...

  5. [精选] 统计在线人数,用php 如何来实现 ?

    一个业务系统网站每天人数的访问量是多少,在线人数是多少?这种业务我们在开发中就要预留,也是在我们的设计范围内的咯!因为一个正在运营的网站,每天都会用到统计. 那在线人数是如何统计的呢,这里有几种方案, ...

  6. 实时用户在线人数统计(一):表统计

    在项目中有时候需要统计实时在线人数,在我过往的项目中,主要实施过以下几种方案,现在一一来说明下: 1)表统计:用数据表统计在线人数,缺点是当并发量大的时候可能造成性能瓶颈,如无特别大的并发的时候完全可 ...

  7. steam游戏在线人数统计周报第1期-2019年10月11日

    steam游戏在线人数统计周报第1期-2019年10月11日 top10热门增长游戏 top10周平均在线人数游戏 top10本周新游戏 top10玩家流失最大游戏 每周一凌晨统计上一周的数据,也就是 ...

  8. 监听器应用【统计网站人数、自定义session扫描器、踢人小案例】

    2019独角兽企业重金招聘Python工程师标准>>> 从第一篇已经讲解过了监听器的基本概念,以及Servlet各种的监听器.这篇博文主要讲解的是监听器的应用. 统计网站在线人数 分 ...

  9. 10亿条数据去重后排序和在线日志人数统计

    一:10亿条数据排序 思路:数据量比较大,普通比较会占用很多的内存,可以采用其他方法,构造一个字节数组 每个字节的值代表连续八个整形数据的值是否存在,即使包括最大的整数值,大概内存512m 源码如下 ...

最新文章

  1. 简单的c语言推箱子程序,完整版本的推箱子小游戏,最简单的纯C语言打造
  2. 阿里云低延时直播RTS能力升级,让直播推流效果更佳
  3. 两数之和,输入有序数组 leetcode C++
  4. 力扣538.把二叉搜索树转换为累加树(JavaScript)
  5. matlab2c使用c++实现matlab函数系列教程-sin函数
  6. matlab画迟滞迥线,[画图的问题]怎么画类似于磁滞回线的图像?一个x值对应两个y值的...
  7. 多重判断php d代码,phpd代码审计
  8. 重载全局new/delete实现内存检测
  9. 使用dd命令制作ISO镜像U盘启动盘
  10. pythonweb项目微服务_python web微服务器端
  11. 课程实训-校园导游系统
  12. 【2020高考同题征文•全国I卷】志向高远,心胸宽阔
  13. 【C++入门】静态成员详解(定义、实现原理、使用注意事项)
  14. indexedDB存储
  15. 6月22日!苹果WWDC大会,全球免费参加-首次在线举行!
  16. 大话设计模式读书笔记之桥接模式
  17. 解决手机网页视频同时播放问题
  18. MySQL中可视化新建表
  19. 【Python知识树 -- 预备知识】之 模块管理
  20. oracle闪回能保存多长时间,Oracle闪回

热门文章

  1. apache整合tomcat部署集群
  2. Android中用 adb 命令操作数据库
  3. 学python要考什么证-这十个Python常用库,学习Python的你必须要知道!
  4. 学会python之后-学会Python后,人生简直开挂了!
  5. python新手教程 从零开始-让你从零开始学会写爬虫的5个教程(Python)
  6. python怎么加载图片-如何用python获取图像
  7. 从零开始学习python-从零开始学python
  8. python大神-6年Python大神总结10个开发技巧,80%的人都不会
  9. python导入txt为dataframe-python读取文本中数据并转化为DataFrame的实例
  10. python切片语法-Python新手学习基础之数据类型——字符串的切片截取