zoukankan      html  css  js  c++  java
  • 20180706模拟赛T3——神经衰弱

    文件名: card
    题目类型: 传统题
    时间限制: 1秒
    内存限制: 128MB
    编译优化: 无

    题目描述

    天然少女小雪非常喜欢玩一个叫做神经衰弱的游戏。
    游戏规则是,有若干种牌,每种牌有若干对,开始时全都正面朝下放置。
    然后每次同时翻开两张牌,假如这两张牌是同一种类,则拿走这两张牌,否则再次翻回背面。
    小雪虽然看上去傻乎乎的但是玩这个游戏非常厉害,所以可以认为她是绝对聪明的,即会采取最优决策和有着完美的记忆力。
    现在小雪想要知道,对于某一副牌局,她期望拿多少次可以拿走所有牌。
    需要注意的是小雪玩的神经衰弱和普通神经衰弱有所不同。普通神经衰弱是依次拿走两张牌,而小雪的神经衰弱是同时拿走两张牌。

    输入格式

    第一行一个整数(n)表示牌的种类数
    第二行(n)个整数(a_{i})表示第(i)种牌有多少对

    输出格式

    一个整数,表示期望(mod998244353)
    即假如答案是(frac{a}{b}),你需要输出的是某个数(x),使(xb=apmod {998244353})
    保证(a ot=0,b ot=0)

    样例输入

    2

    1 1

    样例输出

    332748121

    数据规模与约定

    30%:(n≤5,a_{i}≤2)
    60%:(n≤3000)
    对于所有数据(n≤10^6,a_{i}≤10^9)

    题解

    首先,发现两张牌相同后不管什么时间把它们拿去都是一样的,所以我们统一最后拿去。

    我们设(s)为总对数,即(s = sum_{i=1}^{n}a_i)

    则总共有(2s)张牌。

    那如果抽出的两张牌都两两不同,则总和为须(s)次。

    然后我们把它们一个个拿去,又须(s)次。

    所以总共(2s)次。

    然而可能有情况一次性抽到了两张相同的牌,所以我们要把它的期望减去。

    首先,对于任意(i)其发生的概率为(frac{C_{a_i}^{2}}{C_{s}^{2}}),化简一下,得到(frac{a_i(a_i-1)}{s(s-1)})

    所以总概率为(sum_{i=1}^{n}frac{a_i(a_i-1)}{s(s-1)} = frac{sum_{i=1}^{n}a_i(a_i-1)}{s(s-1)})

    总共选(s)次,所以期望为(s imes frac{sum_{i=1}^{n}a_i(a_i-1)}{s(s-1)} = frac{sum_{i=1}^{n}a_i(a_i-1)}{s-1})

  • 相关阅读:
    函数式编程二 之异常处理
    ANSI是什么编码?
    Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
    文件(csv、excel、xml、html)的读取(read)和写入(write)方法——python
    [python]提取PPT中的文字(包括图片中的文字)
    spring boot druid数据源配置
    spring boot打包
    rust常用技巧
    01_spring概述
    spring boot集成swagger文档
  • 原文地址:https://www.cnblogs.com/pfypfy/p/9275235.html
Copyright © 2011-2022 走看看