zoukankan      html  css  js  c++  java
  • CF1528F AmShZ Farm 题解

    Luogu
    Codeforces

    Description.

    称一个数列 \(\{a_i\}\) 是好的,当且仅当 \(\exists \{b_i\}\),满足

    • \(\forall i\in[1,n],b_i\ge 0\)
    • \(\{a_i+b_i\}\) 是个排列。

    一个数列的权值是所有数出现次数的 \(k\) 次方和。
    求所有好序列的权值和。

    \(n\le 10^9,k\le 10^5\)

    Solution.

    国 外 计 数 水 平

    首先考虑什么样的数列是好的。
    一个判断方式是从前往后遍历,对于每个数不断 \(+1\),直到不在前面出现过。
    这个判断方式显然是正确的,考虑这个的意义。
    发现和这题很类似。
    考虑相同的套路,增加一个虚点,值域调成 \([1,n+1]\),填到 \(n+1\) 就不合法。
    现在这个环上只有一个 \(n+1\) 没有被填上,但是我们要统计权值和。

    如果把这个环循环移位 \(0,1,\cdots,n\),那肯定包含了所有合法序列。
    而同时,每种颜色的贡献也相同的,答案是一种颜色的贡献 \(\times (n+1)\times \frac 1{n+1}\)
    而一种颜色的贡献是 \(\sum_{i=0}^n\dbinom nin^{n-i}i^k\),相当于枚举颜色其他随便选。

    然后就推式子,如下。

    \[\begin{aligned} &=\sum_{i=0}^n\dbinom nii^kn^{n-i}\\ &=\sum_{i=0}^n\dbinom nin^{n-i}\sum_{j=0}^{\min(k,i)}\begin{Bmatrix}k\\j\end{Bmatrix}i^{\underline j}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\sum_{i=j}^n\frac{n!}{i!(n-i)!}n^{n-i}\frac{i!}{(i-j)!}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\frac{n!}{(n-j)!}\sum_{i=j}^n\frac{(n-j)!}{(n-i)!(i-j)!}n^{n-i}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\frac{n!}{(n-j)!}\sum_{i=j}^n\dbinom{n-j}{n-i}n^{n-i}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\frac{n!}{(n-j)!}\sum_{i=0}^{n-j}\dbinom{n-j}{i}n^{i}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\frac{n!}{(n-j)!}(n+1)^{n-j}\\ \end{aligned} \]

    然后就做完了。

    Coding.

    点击查看代码
    哈哈不给
    
  • 相关阅读:
    基于windows的mysql读写分离和amoeba配置
    windows环境下mysql主从配置
    Mysql主从报错锦集
    Nginx流控
    windows_windows下的rsync
    Kafka+ZooKeeper高可用集群部署
    通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布
    Redis性能指标监控
    MongoDB用户权限管理
    ZooKeeper原理详解及常用操作
  • 原文地址:https://www.cnblogs.com/pealfrog/p/15419152.html
Copyright © 2011-2022 走看看