SP1480题解
《四重计树法》
- 有标号无根
prufer 序列,\(n^{n-2}\)。
- 有标号有根
prufer 序列,\(n^{n-1}\)。
- 无标号有根
设 \(f[n]\) 为 \(n\) 个节点时的答案,有:
\]
人话就是 \(F(x)=x\times Euler(F(x))\)。
考虑求导列出 ODE 然后 \(O(n^2)\)。
\]
求导:
\]
\]
\]
\]
\]
\]
同理,只需要维护出 \(F(x)\) 就可以维护出 \(F'(x),\sum_{i=1}x^iF(x^i)\) 和后面那个卷积,复杂度 \(O(n^2)\)。
- 无标号无根
考虑把每颗无根树变成 以重心为根的有根树。
然后我们只需要做一遍有根的再减去不为重心的即可。
不为重心,那么一定有一个子树的大小大于了 \(\lfloor\frac{n}{2}\rfloor\)。
当 \(n\) 为奇数时,每棵树只有一个重心,减去的方案数为:
\]
当 \(n\) 为偶数时,有些树可能有两个重心。因此还需要额外减去有两个重心的树。
有两个重心就说明有一个分界的边,两边都恰好有 \(\frac{n}{2}\) 个节点。从 \(f_{\frac{n}{2}}\) 中选出两个方案即可。也就是 \(\binom{f_{\frac{n}{2}}}{2}\)。
#include<cstdio>
const int M=1005;
inline void swap(int&a,int&b){
int c=a;a=b;b=c;
}
inline int pow(int a,int b,const int&mod){
int ans(1);for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;return ans;
}
inline int Solve1(const int&n,const int&mod){
static int f[M],g[M],inv[M];
int ans(0);
f[1]=g[1]=inv[1]=1;
for(int i=2;i<=n;++i)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
for(int i=2;i<=n;++i){
for(int k=1;k<=i;++k)f[i]=(f[i]+1ll*f[k]*g[i-k])%mod;
f[i]=1ll*f[i]*inv[i-1]%mod;
for(int k=1;k<=i;++k)if(!(i%k))g[i]=(g[i]+1ll*f[k]*k)%mod;
}
ans=f[n];
for(int i=0;i<=n;++i)f[i]=g[i]=inv[i]=0;
return ans;
}
inline int Solve2(const int&n,const int&mod){
static int f[M],g[M],inv[M];
int ans(0);
f[1]=g[1]=inv[1]=1;
for(int i=2;i<=n;++i)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
for(int i=2;i<=n;++i){
for(int k=1;k<=i;++k)f[i]=(f[i]+1ll*f[k]*g[i-k])%mod;
f[i]=1ll*f[i]*inv[i-1]%mod;
for(int k=1;k<=i;++k)if(!(i%k))g[i]=(g[i]+1ll*f[k]*k)%mod;
}
ans=f[n];
for(int i=n/2+1;i<n;++i)ans=(ans-1ll*f[i]*f[n-i])%mod;
if(!(n%2))ans=(ans-1ll*f[n/2]*(f[n/2]-1)/2%mod)%mod;
for(int i=0;i<=n;++i)f[i]=g[i]=inv[i]=0;
return(ans+mod)%mod;
}
signed main(){
int t,n,mod;
while(~scanf("%u%u%u",&t,&n,&mod)){
if(t==1){
printf("%u\n",n==1?1:pow(n%mod,(n-2)%(mod-1),mod));
}
if(t==2){
printf("%u\n",n==1?1:pow(n%mod,(n-1)%(mod-1),mod));
}
if(t==3){
printf("%u\n",Solve1(n,mod));
}
if(t==4){
printf("%u\n",Solve2(n,mod));
}
}
}
SP1480题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- vue3 最长递增子序列 diff优化
//vue3优化版(回头我会完善下算法思路) function getSequence(arr) { const p = arr.slice() const result = [0] let i, j ...
- Kubernetes实战之部署ELK Stack收集平台日志
主要内容 1 ELK概念 2 K8S需要收集哪些日志 3 ELK Stack日志方案 4 容器中的日志怎么收集 5 K8S平台中应用日志收集 准备环境 一套正常运行的k8s集群,kubeadm安装部署 ...
- 动态修改UINavigationBar的背景色--by-胡旭
这是我们最终想要得到的效果 思路 在UISrollView的delegate方法 - (void)scrollViewDidScroll:(UIScrollView *)scrollView中根据当前 ...
- 直播媒体流red5
第一步下载 安装setup-Red5-1.0.1-java6.exe 安装教程网上有很多 显示如下页面说明安装成功 第二步 下载oflaDemo的 解压放在 第三步 打开 然后 ok了 注意:下面的 ...
- Annotation深入研究——@Documented注释使用
Documented注释的作用及其javadoc文档生成工具的使用 代码放在MyDocumentedtAnnotationDemo.java文件中 package org.yu.demo16.docu ...
- Spring-BeanFactory体系介绍
1 BeanFactory介绍 BeanFactory是Spring中的根容器接口,所有的容器都从从它继承而来,ApplicationContext中对于BeanDefinition的注册,bean实 ...
- VMware15.5虚拟机安装及LInux系统安装前 准备工作
VMware15.5虚拟机安装及Linux系统安装前 准备工作 一.vmware15.5安装 1.安装环境准备 1.vmware15.5版本和秘钥(版本资源和密钥小白已经上传到资源文档里面,要想下载可 ...
- elasticsearch查询之三种fetch id方式性能测试
一.使用场景介绍 elasticsearch除了普通的全文检索之外,在很多的业务场景中都有使用,各个业务模块根据自己业务特色设置查询条件,通过elasticsearch执行并返回所有命中的记录的id: ...
- 硬件安全学习–RFID / Hardware security learning – RFID
RFID基础知识 RFID是什么? RFID代表近距离通讯(Radio Frequency Identification). ------------------------------------- ...
- 简述对CT,IT,ICT,OT的认识
今天碰到一个关键词:CT.CT领域,所以给自己做一个科普. 网络:简述对CT,IT,ICT,OT的认识 一.通信技术-CT(Communication Technology) 最早的CT业被称为电信业 ...