loj6570 毛毛虫计数(生成函数FFT)
巨佬olinr的题解 <-- olinr很强
考虑生成函数
考虑直径上点数>=4的毛毛虫的直径,考虑直径中间那些节点以及他上面挂的那些点的EGF
\(A(x)=\sum_{i\ge 1}\frac{ix^i}{i!}\)
考虑和直径两端点相连的节点,我们强制让他挂至少一个点(否则他就成了直径端点就重复了),EGF
\(B(x)=\sum_{i\ge 2}\frac{ix^i}{i!}\)
最后答案生成函数就是
\(Ans(x)=B(x)*\frac{1}{1-A(x)}*B(x)\)
考虑直径上点数为3的毛毛虫,发现就是一个菊花,刚好有 n 种情况
另外毛毛虫正着反着是一样的,注意除以一个2
所以答案为 \(\frac{[x^n]Ans(x)n!}{2}+n\)
另外n=2要特判,一开始就想到了,只是忘了造这种数据了,然后好多人没特判就加上n=2数据了卡同学23333
代码太丑不放了23333
关于这个idea是怎么来的,olinr讲了 [ZJOI2016]大森林 这道题,我大力debug没d出来,就把第一个样例放graph editor里大力跑,然后虚点连成了一个类似毛毛虫的东西...于是就有了这题... 所以题面里写的 olinr是巨佬
吐槽:为了验证解法,我手跑小数据时候发现n<=6所有树都是毛毛虫,n=7只有一种情况不是(中心一个点,身处3条长度为2的链) n=8只好枚举毛毛虫的形态再用高中数学那套理论跑。。。一开始跑错了,后来对了
upd:巨佬xyx用容斥A了。。。比生成函数FFT多项式求逆快好几倍。。。link
(其实我当初就应该直接要求输出1到n的个数的。。。只是当时把这题扔到了一套题里面,三道题的输入输出都是一个数,懒得改数据了。。。)
loj6570 毛毛虫计数(生成函数FFT)的更多相关文章
- 有标号DAG计数(生成函数)
有标号DAG计数(生成函数) luogu 题解时间 首先考虑暴力,很容易得出 $ f[ i ] = \sum\limits_{ j = 1 }^{ i } ( -1 )^{ j - 1 } \bino ...
- bzoj 3771: Triple【生成函数+FFT+容斥原理】
瞎搞居然1A,真是吃鲸 n的范围只有聪明人能看见--建议读题3遍 首先看计数就想到生成函数,列出多项式A(x),然后分别考虑123 对于选一个的直接计数即可: 对于选两个的,\( A(x)^2 \), ...
- 挑选队友 (生成函数 + FFT + 分治)
链接:https://www.nowcoder.com/acm/contest/133/D来源:牛客网 题目描述 Applese打开了m个QQ群,向群友们发出了组队的邀请.作为网红选手,Applese ...
- 【BZOJ3771】Triple 生成函数 FFT 容斥原理
题目大意 有\(n\)把斧头,不同斧头的价值都不同且都是\([0,m]\)的整数.你可以选\(1\)~\(3\)把斧头,总价值为这三把斧头的价值之和.请你对于每种可能的总价值,求出有多少种选择方案. ...
- 有标号的DAG计数(FFT)
有标号的DAG计数系列 有标号的DAG计数I 题意 给定一正整数\(n\),对\(n\)个点有标号的有向无环图(可以不连通)进行计数,输出答案\(mod \ 10007\)的结果.\(n\le 500 ...
- 2018.12.31 bzoj3771: Triple(生成函数+fft+容斥原理)
传送门 生成函数经典题. 题意简述:给出nnn个数,可以从中选1/2/31/2/31/2/3个,问所有可能的和对应的方案数. 思路: 令A(x),B(x),C(x)A(x),B(x),C(x)A(x) ...
- [HDU4609]3-idiots(生成函数+FFT)
3-idiots Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- loj #6570. 毛毛虫计数
$ \color{#0066ff}{ 题目描述 }$ hsezoi 巨佬 olinr 喜欢 van 毛毛虫,他定义毛毛虫是一棵树,满足树上存在一条树链,使得树上所有点到这条树链的距离最多为 1. 给定 ...
- BZOJ 3771: Triple(生成函数 FFT)
Time Limit: 20 Sec Memory Limit: 64 MBSubmit: 911 Solved: 528[Submit][Status][Discuss] Description ...
随机推荐
- Canny效果
- ubuntu14.04 64位安装 g2o
参考链接:http://blog.csdn.net/jiujiu932/article/details/52248577 http://www.cnblogs.com/gaoxiang12/p/473 ...
- poi导出excel表格
package poiexcel; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; ...
- BOOST_TYPEOF和BOOST_AUTO
1.简介 头文件<boost/typeof.hpp>里定义了两个宏:BOOST_TYPEOF和BOOST_AUTO,分别用于仿真C++新标准的typeof和auto关键字,可以在编译期自动 ...
- c++ static笔记
[转]http://www.cnblogs.com/zi-xing/p/4590282.html static的作用 在函数体,一个被声明为static的变量,在这一函数被调用的过程里,其数值维持不变 ...
- [Fiddler]如何让Fiddler可以抓取https的请求
Fiddler通过在本机开启了一个http的代理服务器来进行http请求和响应转发,默认情况下,并不能抓取https的请求.下面小编就来介绍下,如何用fiddler来抓取https的请求. 1.打开F ...
- oracle sql 数结构表id降序
UPDATE BAS_ORGANIZATION_TYPE T1SET T1.PARENTID=(select rn from (SELECT id,rownum rn FROM BAS_ORGANIZ ...
- TF Boys (TensorFlow Boys ) 养成记(四):TensorFlow 简易 CIFAR10 分类网络
前面基本上把 TensorFlow 的在图像处理上的基础知识介绍完了,下面我们就用 TensorFlow 来搭建一个分类 cifar10 的神经网络. 首先准备数据: cifar10 的数据集共有 6 ...
- IE6 BUG及解决方案
1.IE6中奇数宽高的BUG 一个外部的相对定位div,内部一个绝对定位的div(right:0) 可是在IE6下查看,却变成了right:1px的效果了: 解决方案就是将外部相对定位的div宽度改成 ...
- python 数据合并
1. 数据合并 前言 一.横向合并 1. 基本合并语句 2. 键值名不一样的合并 3. “两个数据列名字重复了”的合并 二.纵向堆叠 统计师的Python日记[第6天:数据合并] 前言 根据我的Pyt ...