• C 对抗赛


    时间限制 : - MS   空间限制 : - KB 
    评测说明 : 1s,256m
    问题描述

    某校有n只信竞队伍,队伍编号1到n,每只队伍都有一定数量的队员,队伍中每个人都有一个CF积分,积分越高,意味着竞技水平越高。
    有时候队伍间会举行一场对抗赛,对抗赛由两只队伍参赛,老师在参赛的每只队伍中都随机挑选一个队员出来,然后两个人打一场CF比赛,众所周知,CF积分高的那一位选手一定会获胜。如果参赛选手的CF积分相同,则两人获胜的概率相同。
    现在老师向你提出了一些询问,如果X和Y号队伍进行对抗,获胜队员的CF积分的期望值是多少?

    输入格式

    第一行,一个整数N
    接下来N行,其中第i行,第一个整数Ci,表示i号队伍的队员数量,接下来Ci个整数,表示这只队伍每个队员的CF积分。
    接下一行,一个整数M,表示询问数量
    接下来M行,每行两个整数X和Y,表示一场对抗赛参赛队伍的编号。

    输出格式

    M行,每行一个整数,对应一次询问的答案,保留4个小数位。

    样例输入


    3 1 2 3 
    3 1 2 3 
    1 4 

    1 2 
    1 3

    样例输出

    2.4444 
    4.0000

    提示

    样例解释:
    对于第一个查询,可能的对抗情况是 (1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)。
    每种对抗发生的概率都是1/9 ,每种对抗获胜的者的CF积分分别时1,2,3,2,2,3,3,3,3
    这样期望就是 (1+2+3+2+2+3+3+3+3)/9 = 22/9
    第二个查询:不管怎么对抗都是CF积分为4的队员获胜。
    数据范围: 设T表示信竞队员的总人数。
    对于10%的数据:Ci=1
    对于30%的数据:T<=100,M<=100
    对于60%的数据:T<=2500,M<=5000
    对于100%的数据:T<=40000,M<=40000, Ci>0, 0<=CF积分<=1000000

     【题目分析】

    对于 c[i]=1 的部分分,答案就等于两者的较大值
    对于 T<=100 的部分分,枚举两个队伍里的每一对人,计算答案,复杂度 O(m T^2)
    对于 T<=2500 的部分分,把每个队伍里的人排序,并计算 CF 积分的后缀和,枚举一个队伍
    里被选出的人,在另一个队伍里二分出第一个比这个人大的人,利用之前计算的后缀平均值
    得出答案
    对于满分做法,我们考虑对上一个算法进行优化,枚举的时候一定枚举人数比较少的那个队
    伍,那么如果人数比较少的队伍人数小于√T 个,则这部分单次询问复杂度不超过
    √T*log T,如果两个队伍人数都大于 √T 个,因为人数大于√T 的队伍最多有√T 个,
    如果我们对于已经做过的询问记住答案,再次询问时直接输出,那么最坏对于每个人数大于
    √T 的队伍我们在枚举每个人的时候都要对这个队伍二分一次,那么这部分的总共复杂度
    不会超过 O(T*√T*log T)
    总复杂度 O(T*√T*log T)(假设 m T 同阶)
    /*
    队伍 A46810
    队伍 B13679
    总共可能有 4*5=20 场比赛
    选人数少的 A 对出来讨论:
    对于 4: 二分查找 B, 大于 4 的第一个数为 65 场获胜选手积分分别是(4,4,6,7,9)
    4*2+(6+7+9)
    对于 7: 二分查找 B, 大于 6 的第一个数为 75 场获胜选手积分分别是(6,6,6,7,9)
    6*3+(7+9)
    对于 8: 二分查找 B, 大于 8 的第一个数为 95 场获胜选手积分分别是(8,8,8,8,9)
    8*4+9
    对于 10: 二分查找 B, 大于 10 的第一个数不存在, 5 场获胜选手积分分别是(10,10,10,10,10)
    10*5
    获胜选手的期望积分:
    (4*2+(6+7+9)+ 6*3+(7+9)+ 8*4+9+10*5)/20
    */

    【参考代码】

  • 相关阅读:
    glog Windows Visual Studio 2013 编译项目
    Git Tag管理发行版本
    Ubuntu 16.04环境中读取XBOX 360手柄信息
    GCC 中 的pie和fpie选项
    CMakeLists.txt 常用指令说用
    chrome无法访问github.com
    删除前n天的数据
    shell(9)秒转换为时分秒
    Drools规则引擎实践直白总结
    空闲时间研究一个小功能:winform桌面程序如何实现动态更换桌面图标
  • 原文地址:https://www.cnblogs.com/Limbo-To-Heaven/p/11637316.html
Copyright © 2020-2023  润新知