"科林明伦杯"哈理工第九届——分布式服务(概率期望+思维)

简介: "科林明伦杯"哈理工第九届——分布式服务(概率期望+思维)

题目描述

小赵实习时负责的服务模块由多个实例共同组成,当出现一个请求时,反向代理会将请求随机的转发到一个实例上进行处理。由于网络波动等原因,请求可能出现超时的情况,这时候,客户端会进行重试,请求会再一次随机转发到某个实例。重复这个过程,直到请求处理完成。

通过监控报表,小赵能够了解到某个时间段内服务模块内所有实例的情况。每个实例有一个处理时间t,如果时间t为正数则代表这个实例能够花费t 的时间完成请求的处理,而如果时间t为负数,则代表这个请求需要等待abs(t) 的时间重试。为了评估服务质量的好坏,小赵决定计算一下,一个请求处理成功所花费时间的期望。

输入

本题有多组数据,处理到文件结束。

每组数据一个整数n代表服务模块的实例数量。(1<=n<=100)

接下来一行n个整数代表上文描述中每个实例的t。(1<=abs(t)<=10000))


输出

每组数据输出"p/q"代表以分数表示期望的值,p为分子,q为分母,p和q需互质(如1/2代表二分之一)。如果请求无法处理完成,请输出"inf"。

样例输入 Copy

1

1

2

-1 -2

3

3 -6 -9

样例输出 Copy

1/1

inf

18/1

提示

在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。它反映随机变量平均取值的大小。----摘自百度百科


先放一波代码~

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
  return b==0?a:gcd(b,a%b);
}
int main(){
    int n;
    while(~scanf("%d",&n)){
        int t;
        int cnt = 0;
        int sum = 0;
        while(n--){
            cin>>t;
            if(t>=0) cnt++;
            sum += abs(t);
        }
        if(cnt==0)  cout<<"inf"<<endl;
        else
            cout<<sum/gcd(sum,cnt)<<"/"<<cnt/gcd(sum,cnt)<<endl; 
    }
    return 0;
}

数学期望的解释及公式请到百度百科~

先大体理解下题意吧:现在有多个服务模块,但是质量有好有坏,有的实例能够处理请求,而有的实例则会延迟一段时间后给其他服务器处理。问一个请求处理成功所花费的时间。


我们可以设一个请求成功处理的期望为E,在所有的实例里处理时间t为负数的服务器数量为x,那么每台实例处理请求的概率是1/n。所以如果该请求是从质量好的实例处理成功的话,期望为ti,否则,期望为E+abs(ti);

可得到以下推导:


E =sum(Ei) / n Ei为各个实例处理完成的期望

E = (sum(abs(ti))+k*E) / n ti为各个实例的t

E = sum(abs(ti)) / (n-k)


注意题目要求输出最简分式,再将计算结果同除最大公约数即可。


最后放两道关于概率期望的待补题

题目链接 CodeForces 453A 题解

计蒜客蓝桥杯训练 炮台实验 题解


目录
相关文章
|
8月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
629 2
|
8月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
【亿级数据专题】「分布式服务框架」 盘点本年度我们探索服务的保障容量的三大关键方案实现
248 0
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
144 3
|
5月前
|
存储 监控 负载均衡
检索服务elasticsearch分布式结构
【8月更文挑战第22天】
59 3
|
1月前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
67 11
|
4月前
|
数据采集 分布式计算 MaxCompute
MaxCompute 分布式计算框架 MaxFrame 服务正式商业化公告
MaxCompute 分布式计算框架 MaxFrame 服务于北京时间2024年09月27日正式商业化!
118 3
|
8月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
329 0
|
7月前
|
消息中间件 传感器 Cloud Native
事件驱动作为分布式异步服务架构
【6月更文挑战第25天】本文介绍事件驱动架构(EDA)是异步分布式设计的关键模式,适用于高扩展性需求。EDA提升服务韧性,支持CQRS、数据通知、开放式接口和事件流处理。然而,其脆弱性包括组件控制、数据交换、逻辑关系复杂性、潜在死循环和高并发挑战。EDA在云原生环境,如Serverless,中尤其适用。
242 2
事件驱动作为分布式异步服务架构
|
5月前
|
Java 应用服务中间件 数据库
SpringCloud:服务保护和分布式事务详解
SpringCloud:服务保护和分布式事务详解
142 0