cojs DAG计数问题1-4 题解报告
最近突然有很多人来问我这些题目怎么做OwO
然而并不是我出的,结论我也不是很懂
研究了一下觉得非常的一颗赛艇,于是就打算写这样一篇题解
DAG 1
我们考虑DAG的性质,枚举出度为0的点
设出度为0的点有k个,则一共有C(n,k)种方案
对于剩下的(n-k)个点和这k个点之间可以任意连边,方案为2^(k*(n-k))
去掉这k个点之后剩下(n-k)个点仍然是DAG,方案为f(n-k)
则方案数为C(n,k)*2^(k*(n-k))*f(n-k)
考虑到剩下的(n-k)个点中也可能有出度为0的点,即方案可能会有重复
考虑算重的部分,用容斥原理解决即可
最后得到f(n)=sigma((-1)^(k-1)*C(n,k)*2^(k*(n-k))*f(n-k))
这个递推式是O(n^2)的,可以通过DAG 1
DAG 2
不难想到要用FFT来优化上面的递推式
瓶颈在于2^(k*(n-k))的拆分
我们发现(n-k)^2=n^2+2nk+k^2
不难构造出k*(n-k)= n^2/2 - k^2/2 - (n-k)^2/2
代入之后得到卷积形式,直接做CDQ+FFT即可
定义g(n)=2^(n^2/2)*n!
注意到f(n)/g(n)=sigma( (-1)^(k-1)/g(k) * f(n-k)/g(n-k) )
定义多项式h,h(n)=(-1)^(n-1)/g(n)
定义多项式ans,ans(n)=f(n)/g(n)
变形之后得ans-ans*h=1
之后得到ans=1/(1-h)
多项式求逆即可
UPD:注意一下这里的实现,由于n^2/2有可能不是整数,而且(mod-1)和2不是互素的
但是因为在模意义下我们可以找到x^2=2(mod 998244353)
所以2^(n^2/2)=x^(n^2)
至于怎么求解x,因为可以预处理,所以直接枚举算出结果在代码里直接用就可以了
正常向的做法是用原根取对数之后BSGS搞一搞
DAG 3
设f(n)为n个点的DAG的个数(可以不连通)
设g(n)为n个点的连通DAG的个数
不难想到用f(n)减去不连通的就是连通的
计算不连通图常见技巧是枚举特定的某个点所在的联通块的大小
则得到g(n)=f(n)-sigma( C(n-1,k-1)*g(k)*f(n-k) )
这样我们就在O(n^2)的时间内求出来了
DAG 4
注意到上面的那个式子自然就是卷积形式
一发CDQ+FFT就可以了
但是我们可以做到更好
变形之后得到sigma( g(k)/(k-1)! *f(n-k)/(n-k)! ) = f(n)/(n-1)!
我们要求g,那么多项式求逆即可
我们注意到实际上不连通的DAG是由多个连通的DAG组成的
设可以不连通的DAG的多项式为f,连通DAG的多项式为g
不难得到f=e^g
那么g=ln(f)
多项式求ln即可
cojs DAG计数问题1-4 题解报告的更多相关文章
- cojs QAQ的图论题 题解报告
话说这个题目应该叫做 斯特林数的逆袭 QAQ 先说一说部分分的算法 1.n<=5 直接暴力搜索就可以了 2.k=0的时候不难发现任意一张图的价值都是n,问题转化为计算有多少种图,显然是2^C(n ...
- cojs 简单的01串 题解报告
题意显然是求n位二进制串中不大于其逆序串,取反串,逆序取反串的所有串按字典序排序后的第k个 由于n很小,k很大所以我们可以考虑逐位确定 问题转化为了求方案数,这显然是可以用数位DP做的 设f[len] ...
- cojs 简单的数位DP 题解报告
首先这道题真的是个数位DP 我们考虑所有的限制: 首先第六个限制和第二个限制是重复的,保留第二个限制即可 第五个限制在转移中可以判断,不用放在状态里 对于第一个限制,我们可以增加一维表示余数即可 对于 ...
- cojs 二分图计数问题1-3 题解报告
OwO 良心的FFT练手题,包含了所有的多项式基本运算呢 其中一部分解法参考了myy的uoj的blog 二分图计数 1: 实际是求所有图的二分图染色方案和 我们不妨枚举这个图中有多少个黑点 在n个点中 ...
- cojs 强连通图计数1-2 题解报告
OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...
- 2015浙江财经大学ACM有奖周赛(一) 题解报告
2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...
- 题解报告:hdu 1398 Square Coins(母函数或dp)
Problem Description People in Silverland use square coins. Not only they have square shapes but also ...
- 题解报告:hdu 2069 Coin Change(暴力orDP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...
- 题解报告: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 ...
随机推荐
- python中列表排序,字典排序,列表中的字典排序
#-*- encoding=utf-8 -*- # python3代码 import operator 一. 按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} 1 ...
- HDU 1281 - 棋盘游戏 - [二分图最大匹配]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1281 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- HDU 3746 - Cyclic Nacklace & HDU 1358 - Period - [KMP求最小循环节]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- hyperledger
http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html https://github.com/hyperledger/block ...
- automation轻松“一点”,搞定裸机安装系统
企业在新建数据中心.新业务上线.老业务扩容等场景下,会采购一批新的裸机服务器,在新服务器投入使用之前,势必得进行操作系统的安装.相信每个人都有安装操作系统的经历,BIOS设置.磁盘分区.驱动安装... ...
- BZOJ4614 UVA1742 Oil 计算几何+搜索+扫描线
正解:计算几何+搜索+扫描线 解题报告: 传送门 哇我是真的觉得这题很妙了!各个方面都很妙啊... 首先有一个很重要的结论:最优线一定可以通过各种变换(旋转/平移)使得经过一条线段的左端点(...并不 ...
- chown 命令
root@localhost ~]# .txt # 同时修改文件属主和属组 !chown 执行上一个chown命令
- 008-ant design roadhogrc 打包
一.概述 1.1.官方地址以及说明 由于 Ant Design Pro 底层使用的 roadhog 工具,已经将复杂的流程封装完毕,对于大部分场景,构建打包文件只需要一个命令 roadhog buil ...
- Python中使用中文正则表达式匹配指定的中文字符串
业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发 ...
- PAT 1072 Gas Station[图论][难]
1072 Gas Station (30)(30 分) A gas station has to be built at such a location that the minimum distan ...