zoukankan      html  css  js  c++  java
  • [AGC002 F]Leftmost Ball

    题意

    (1cdots N)的颜色球,每种有(K)个。将所有的(N imes K)球进行排列,同时将每种颜色的第一个凃成颜色(0)(没出现过),问有多少种可能的颜色序列。

    • (N,Kleq 2000)

    分析

    先考虑一种最暴力的做法,就是我们考虑一个dp,设(f_{i,2^S})表示前(i)个里面已经选了(S)这一个集合的球,那么就很容易进行进一步dp了。

    但是,这个复杂度显然是炸上天了,我们肯定可以用某种方法进行改进。这里性能的瓶颈在于我们如何考虑已经选了的颜色。我们可以发现,这里所有的颜色本质上没有区别,也就是说,你完全可以把某两个颜色代表的意义换过来。

    这样我们发现,我们完全可以利用一个序的关系。曾经就有一个题目,按照排序强行做操作从而很高效地解决了题目,这里也可以利用类似的思路。我们考虑,将颜色按照某种方式排序,然后我们可以设出(f_{i,j})表示前(i)个数里面已经用了(1cdots j)的颜色,我们考虑转移有两种,一种是前面(j)种颜色里面添加一种,一种是添加一种新的颜色。我们如果考虑强行让选的顺序是递增的,那么我们下一个选的颜色就只能是(j),也就是从(f_{i-1,j-1})转移。由此很容易写出转移方程:(f_{i,j}=j imes f_{i-1,j}+f_{i-1,j-1})。这个方程就很容易在( ext O(NK))的时间内做完。实际上我们再看一眼:这不就是个斯特林数的递推式嘛!那我们只要套上斯特林数( ext O(Klog N))就做完了……因为对于斯特林数我们存在一个公式:

    [S(n,m)=frac{1}{m!}sumlimits_{k=0}^m(-1)^{m-k}inom{m}{k}k^n ]

    这个公式套进去就做完了……

  • 相关阅读:
    Java内存模型原理,你真的理解吗?
    CentOS 7.4 下搭建 Elasticsearch 6.3 搜索群集
    CentOS 7下ElasticSearch集群搭建案例
    分布式系统理论基础
    分布式系统理论进阶
    Paxos,Raft,Zab一致性协议-Raft篇
    P2P 网络核心技术:Gossip 协议
    分布式系统Paxos算法
    Hacker News的热门排名算法(转)
    Elasticsearch分布式机制和document分析
  • 原文地址:https://www.cnblogs.com/wendavid/p/9005254.html
Copyright © 2011-2022 走看看