话说这个题目应该叫做 斯特林数的逆袭 QAQ

先说一说部分分的算法

1、n<=5 直接暴力搜索就可以了

2、k=0的时候不难发现任意一张图的价值都是n,问题转化为计算有多少种图,显然是2^C(n,2)

3、k=1的时候不难发现任意一张图的价值都是其度数的和,暴力1->10的n不难发现规律QAQ

4、实际上3的算法的规律会启发我们想到这个算法,不难发现每个点的度数的贡献都是独立的

不妨每一个点度数恰好为i的方案数并且计算贡献就可以了QAQ

当前点度数为i,则显然他要向i个点连边,可连边的点一共有(n-1)个

其余(n-1)个点之间随意连边

不难得到贡献为C(n-1,i)*i^k*2^C(n-1,2)

然后考虑每个点实际上都是等价的,可以得到ans=sigma(C(n-1,i)*i^k)*n*2^C(n-1,2)

然后预处理阶乘和阶乘的逆元,可以在O(n)时间内计算答案

这样加起来就有50分辣

5、我们考虑这个式子是否可以化简

注意到i^k=sigma(S(k,j)*j!*C(i,j))

从组合数学的角度理解就是i^k实际上是在i个数中可重选取k个数的方案

我们考虑选取的这k个数都是哪些数,不妨枚举j

那么把k个数分给j个集合就是第二类斯特林数,集合有序所以乘以j!

最后乘以在i个数中选取j个数的方案C(i,j)就可以得到这个式子

之后展开式子,把C(n-1,i)和C(i,j)*j!合并可以得到

ans=sigma((S(k,j)*(n-1)*(n-2)……*(n-j)*sigma(C(n-j-1,i-j))*n*2^C(n-1,2)

不难发现sigma(C(n-j-1,i-j))=2^(n-j-1)

所以计算这个式子我们只需要枚举j就可以了,我们会惊奇的发现这样时间复杂度是O(k)的

然后暴力计算斯特林数的时间复杂度是O(k^2)

总时间复杂度O(k^2),这样结合前面的算法就有70分了

6、考虑时间复杂度的瓶颈在于计算斯特林数

而我们实际上只是求第k行的斯特林数就可以了

我们知道斯特林数的通项公式是

S(n,m)=1/m!*sigma((-1)^k*C(m,k)*(m-k)^n)

从容斥的角度解释的话我们会发现我们有m个盒子,n个元素

可以有空盒的方案实际上是m^n

考虑到条件是不可以有空盒所以我们可以利用容斥原理

枚举至少有k个空盒,其余的盒子任意装,方案为C(m,k)*(m-k)^n

然后套上容斥系数就可以了,注意这里的盒子是无序的,所以我们最后还要消序QAQ

不难发现这个式子是一个卷积形式,我们利用这个式子构造多项式并做FFT

就可以在O(klogk)的时间内求出第k行的所有斯特林数了

时间复杂度O(klogk) QAQ 这样我们就圆满的解决这道题目了

cojs QAQ的图论题 题解报告的更多相关文章

  1. cojs 简单的01串 题解报告

    题意显然是求n位二进制串中不大于其逆序串,取反串,逆序取反串的所有串按字典序排序后的第k个 由于n很小,k很大所以我们可以考虑逐位确定 问题转化为了求方案数,这显然是可以用数位DP做的 设f[len] ...

  2. cojs 简单的数位DP 题解报告

    首先这道题真的是个数位DP 我们考虑所有的限制: 首先第六个限制和第二个限制是重复的,保留第二个限制即可 第五个限制在转移中可以判断,不用放在状态里 对于第一个限制,我们可以增加一维表示余数即可 对于 ...

  3. cojs 强连通图计数1-2 题解报告

    OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...

  4. cojs 二分图计数问题1-3 题解报告

    OwO 良心的FFT练手题,包含了所有的多项式基本运算呢 其中一部分解法参考了myy的uoj的blog 二分图计数 1: 实际是求所有图的二分图染色方案和 我们不妨枚举这个图中有多少个黑点 在n个点中 ...

  5. cogs 自己出的题目 题解报告

    第一题很简单嘛,就是裸的动态树分治嘛 对于每一层的重心维护子树路径的信息和子树到上一层重心的点的信息 空间复杂度O(nlogn) 对于每一层我们按dis排序,之后记录军队数量的前缀和 查询的时候我们只 ...

  6. csu 1978: LXX的图论题

    1978: LXX的图论题 Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 71   ...

  7. CFEducational Codeforces Round 66题解报告

    CFEducational Codeforces Round 66题解报告 感觉丧失了唯一一次能在CF上超过wqy的机会QAQ A 不管 B 不能直接累计乘法打\(tag\),要直接跳 C 考虑二分第 ...

  8. CF Round #580(div2)题解报告

    CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...

  9. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

随机推荐

  1. libevent 定时器示例

    程序执行结果: 每隔2秒,触发一次定时器. (2)98行:evtimer_assign在event.h中定义如下: 再来看看event_assign函数: ev     要初始化的事件对象 base  ...

  2. Xcode7免证书真机调试实践

    1.Open Xcode7, click menu "Xcode-Preferences-accounts" to add your AppleId; 2.According to ...

  3. 自学asp.net mvc(三)

    1.将前台框架的登录页面代码,复制到Login.cshtml. 2.将文本框替换. 3.缓存机制. 4.类图

  4. JAVA类与对象(六)------实例变量与类变量的区别,实例方法和类方法的区别

    实例变量 实例变量声明在一个类中,但在方法.构造方法和语句块之外: 当一个对象被实例化之后,每个实例变量的值就跟着确定: 实例变量在对象创建的时候创建,在对象被销毁的时候销毁: 实例变量的值应该至少被 ...

  5. cocos2dx中导演的职责有哪些?

    1.一个游戏里面只有一个导演,因此采用了单例的设计模式,用getInstance方法来获得 2.游戏中导演负责openGL ES的初始化,场景的切换,游戏的暂停继续(相当于拍电影的ka),节点坐标与世 ...

  6. 理解CSS居中

    我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...

  7. Android -- 与WEB交互在同一个会话Session中通信

    Session与Cookie Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实现, ...

  8. 十个优秀的C语言学习资源推荐

    学习C语言,需要一点一滴,沉下心来,找个安静的地方,泡上一杯咖啡,在浓郁的香味中一起品味她.-- Boatman Yang 人们通常认为计算机编程很烦,但是有些人却从中发现了乐趣.每一个程序员不得不跟 ...

  9. python 实现斐波那契数列

    def fib(n): a,b=0,1 while a<n: print(a,end=" ") a,b=b,a+b print() fib(2000) 输出: 0 1 1 2 ...

  10. JavaScript的DOM操作(2)

    补充:   回车符\r和换行符\n的区别:\r 相当于enter,是段落与段落之间的区别, \n 相当于shift+enter,是行与行之间距离,比较小 几种window操作方法: 1.获取当前窗口大 ...