zoukankan      html  css  js  c++  java
  • 洛谷 P3802 小魔女帕琪

    洛谷 P3802 小魔女帕琪

    洛谷传送门

    题目背景

    从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼。

    帕琪能熟练使用七种属性(金、木、水、火、土、日、月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从而唱出强力的魔法。比如说为了加强攻击力而将火和木组合,为了掩盖弱点而将火和土组合等等,变化非常丰富。

    题目描述

    现在帕琪与强大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常强大的生命力,普通的魔法难以造成效果,只有终极魔法:帕琪七重奏才能对蕾咪造成伤害。帕琪七重奏的触发条件是:连续施放的 77 个魔法中,如果魔法的属性各不相同,就能触发一次帕琪七重奏。

    请注意,无论前 66 个魔法是否已经参与施放终极魔法,只要连续 77 个魔法的属性各不相同,就会再触发一次终极魔法。例如,如果用序号来代表一种魔法,魔法的施放序列为 1, 2, 3, 4, 5, 6,7, 11,2,3,4,5,6,7,1,则前 77 个魔法会触发一次终极魔法,后 77 个魔法会再触发一次终极魔法。

    现在帕琪有 77 种属性的能量晶体,第 ii 种晶体可以施放出属性为 ii 的魔法,共有 a_ia**i 个。每次施放魔法时,会等概率随机消耗一个现有的能量晶体,然后释放一个对应属性的魔法。

    现在帕琪想知道,她触发帕琪七重奏的期望次数是多少,可是她并不会算,于是找到了学 OI 的你

    输入格式

    输入只有一行 77 个整数,第 ii 个整数代表 a_ia**i

    输出格式

    输出一行一个实数代表答案,四舍五入保留三位小数。


    题解:

    答案公式:

    [E=(N-6)P=frac{7! imes prod_{i=1}^7 a_i}{prod_{i=N-5}^{N}} ]

    其中N为总魔法石个数,P为长度为N的数字排列中出现帕奇七重奏的概率

    为什么是这个式子呢?

    我们发现,因为我们是任意构造排列,且每次选魔法石的过程是等概率的。所以对于整个排列来讲,任意7位构成帕奇七重奏的概率是相等的并且互不影响。一共有N-6组。

    那么根据排列组合的思想,整个排列中出现帕奇七重奏的概率就是:

    [P=frac{7! imes prod_{i=1}^7 a_i}{prod_{i=N-6}^{N}} ]

    因为一共有N-6组,所以最终的期望就是上面的那个东西。

    直接模拟即可,需要注意溢出和精度的问题。

    代码:

    #include<cstdio>
    using namespace std;
    const int qi=5040;
    int a[8];
    int n;
    double ans;
    int main()
    {
        ans=1.0*qi;
        for(int i=1;i<=7;i++)
        {
            scanf("%d",&a[i]);
            n+=a[i];
            ans*=a[i];
        }
        for(int i=n-5;i<=n;i++)
            ans=ans/(1.0*i);
        printf("%.3lf",ans);
        return 0;
    }
    
  • 相关阅读:
    POJ 3687 Labeling Balls()
    POJ 2777 Count Color(线段树之成段更新)
    POJ 1961 Period( KMP )*
    POJ 2406 Power Strings (KMP)
    hdu 2199 Can you solve this equation?(二分搜索)
    10679 多少个1
    POJ 2823 Sliding Window
    POJ 2299 Ultra-QuickSort(线段树入门)
    最短路径—Dijkstra算法和Floyd算法
    poj1125&zoj1082Stockbroker Grapevine(Floyd算法)
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13841970.html
Copyright © 2011-2022 走看看