OwO 题目含义都是一样的,只是数据范围扩大了

对于n<=7的问题,我们直接暴力搜索就可以了

对于n<=1000的问题,我们不难联想到<主旋律>这一道题

没错,只需要把方程改一改就可以了

首先我们考虑不合法的方案强连通分量缩点后一定是DAG

考虑子问题:DAG计数

做法可以参考<cojs DAG计数1-4 题解报告>

这里给出转移方程

f(n)=sigma((-1)^(k-1)*C(n,k)*2^(k*(n-k))*f(n-k))

如果考虑上强连通分量缩点的情况呢?

我们可以定义g(n)表示n个点可以组成若干个不相连的强连通分量的情况

考虑将容斥系数算进去,那么如果组成奇数个强连通分量,对g(n)贡献为1,否则为-1

定义f(n)为n个点的强连通图的个数

不难得到递推式g(n)=f(n)-sigma(C(n-1,k-1)*f(k)*g(n-k))

含义是考虑某个点所在的强连通分量的大小,枚举大小k,那么选择方案为C(n-1,k-1)

如果大小为n,那么贡献为f(n)

否则贡献部分是-g(n-k)*f(k),注意到这里由于多了一个强连通分量

所以奇偶性发生改变,g的正负也发生改变

之后我们定义h(n)表示n个点的有向图的个数,不难得到h(n)=2^(n*(n-1))

考虑利用容斥来求解f(n),类比上面求解DAG,可以得到如下递推式

f(n)=h(n)-sigma(C(n,k)*2^(k*(n-k))*h(n-k)*g(k))+f(n)

这个递推式的含义是枚举一些点组成的强连通分量在缩点后的出度为0

那么这些点内部的方案算上容斥系数之后就是g(n)

选出点的方案是C(n,k),剩下(n-k)个点向这k个点任意连边,方案为2^(k*(n-k))

剩下(n-k)个点之间任意连,方案为h(n-k)

注意到这里的+f(n)是因为当n=k的时候,这一坨式子得到的是g(n),而我们只能容斥掉组成的强连通分量>1的方案

这样我们就得到了一个O(n^2)的递推式,可以做n<=1000了

对于n<=10w的问题,我们考虑利用FFT优化上面的式子

上面的式子中f有g,g有f,是非常恶心的

考虑这个式子f(n)=h(n)-sigma(C(n,k)*2^(k*(n-k))*h(n-k)*g(k))+f(n)

两边f可以抵消,我们提出一个g(n)出来之后可以得到只关于g的递推式

g(n)=h(n)-sigma(C(n,k)*2^(k*(n-k))*h(n-k)*g(k)) (k->(n-1))

关于2^(k*(n-k))如何转化成标准FFT形式在DAG计数的时候已经说过了

即nk=n^2/2+k^2/2-(n-k)^2/2

然后做一发CDQ+FFT我们就可以求出g函数了

之后考虑g(n)=f(n)-sigma(C(n-1,k-1)*f(k)*g(n-k))

由于g函数已知,我们移项得到

g(n)+sigma(C(n-1,k-1)*f(k)*g(n-k))=f(n)

在做一发CDQ+FFT我们就可以求出f函数了

总时间复杂度O(nlog^2n)

cojs 强连通图计数1-2 题解报告的更多相关文章

  1. cojs QAQ的图论题 题解报告

    话说这个题目应该叫做 斯特林数的逆袭 QAQ 先说一说部分分的算法 1.n<=5 直接暴力搜索就可以了 2.k=0的时候不难发现任意一张图的价值都是n,问题转化为计算有多少种图,显然是2^C(n ...

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

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

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

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

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

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

  5. 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)

    Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...

  6. 题解报告:hdu 2069 Coin Change(暴力orDP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...

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

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

  8. 题解报告:hdu 1398 Square Coins(母函数或dp)

    Problem Description People in Silverland use square coins. Not only they have square shapes but also ...

  9. CF Educational Round 78 (Div2)题解报告A~E

    CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students​ 依题意模拟即可 #include<bits/stdc++.h> us ...

随机推荐

  1. Python开发一个多并发的FTP SERVER

    允许同时支持多用户在线 用户认证 用户空间配额 权限限制 可上传下载,上传下载中显示进度条 用户可远程切换目录,查看服务端文件列表等 可断点续传

  2. Saltstack之api

    Salt-API 1,htps证书 2,配置文件 3,验证.使用PAM验证 4,启动salt-api 安装salt-api yum -y install salt-api 创建用户 useradd - ...

  3. poj2492 A Bug's Life【并查集】

    Background  Professor Hopper is researching the sexual behavior of a rare species of bugs. He assume ...

  4. CodeForces - 586D Phillip and Trains 搜索。vis 剪枝。

    http://codeforces.com/problemset/problem/586/D 题意:有一个3*n(n<100)的隧道.一个人在最左边,要走到最右边,每次他先向右移动一格,再上下移 ...

  5. ESXI虚拟机磁盘管理(精简-厚置-精简)

    VMwareESX/ESXi 精简置备(thin)与厚置备(thick)虚拟机磁盘之间转换 VMwareESX/ESXi 虚拟机磁盘thin与thick之间转换 注意:转换前请先关闭虚拟机!!! 一. ...

  6. Zookeeper简介及单机、集群模式搭建

    1.zookeeper简介 一个开源的分布式的,为分布式应用提供协调服务的apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...

  7. 44(function pointer 2)

    #include<iostream> using namespace std; class A { public: int x; int sayhello() { cout<< ...

  8. Monkey and Banana---hdu1069(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题意就是给你n种长方体每种类型不限制个数,然后我们把它们一个个堆起来,并且要满足下面的要比上面的 ...

  9. Memcached集群架构方面的问题(转)

    add by zhj: 这是一个系列中的第二篇,该系列有四篇,英文原文没找到,译文见:http://blog.csdn.net/jarfield/article/details/4336035 ,附上 ...

  10. java 8 学习资料

    出处: 总览 http://www.importnew.com/24300.html stream api 详解 : https://www.ibm.com/developerworks/cn/jav ...