当前位置: 首页 > news >正文

LG5689

\(f_u\) 表示以 \(u\) 为根的子树构成不同多叉堆的方案数。显然最小的 \(0\) 应该分配给 \(u\),剩下的分给子节点 \(v_1,v_2,\cdots,v_k\),根据乘法原理,有

\[f_u=\prod_{i=1}^k \binom{siz_u-1-\sum_{j=1}^{i-1}siz_{v_j}}{siz_{v_i}}f_{v_i} \]

将组合数和 \(f\) 分开,观察到组合数全部乘起来后分子即为 \((siz_u-1)!\),分母即为子节点大小阶乘的乘积,即

\[f_u=\dfrac{(siz_u-1)!}{\prod_{i=1}^ksiz_{v_i}!}\prod_{i=1}^kf_{v_i} \]

直接使用并查集维护点的关系,并在合并时更新对应的 \(f\) 即可。使用快速幂计算逆元,时间复杂度 \(O(n\log n+q)\)

#include<iostream>
#include<cstdio>
#define N 500010
#define mod 1000000007
#define int long long
using namespace std;
int n,m,fa[N],f[N],fac[N],inv[N],siz[N],ans;
int qp(int a,int b){int c=1;while(b){if(b&1)c=c*a%mod;b>>=1;a=a*a%mod;}return c;
}
int cx(int x){if(x==fa[x])return x;return fa[x]=cx(fa[x]);
}
signed main(){//f[u]=C_{siz[u]-1}^siz[v1]*f[v1]*C_{siz[u]-siz[v1]-1}^siz[v2]*f[v2]......*C_{siz[vk]}^siz[vk]*f[vk];//    =(siz[u]-1)!/(siz[v1]!siz[v2]!...siz[vk]!)*f[v1]f[v2]...f[vk]int op,x,y;cin>>n>>m;fac[0]=inv[0]=1;for(int i=1;i<=n;i++){fac[i]=fac[i-1]*i%mod;inv[i]=qp(fac[i],mod-2);fa[i]=i,siz[i]=1,f[i]=1;}while(m--){cin>>op;if(op==1){cin>>x>>y;x=(x+ans)%n;y=(y+ans)%n;x++;y++;x=cx(x),y=cx(y);f[y]=f[y]*inv[siz[y]-1]%mod*fac[siz[y]+siz[x]-1]%mod;f[y]=f[y]*inv[siz[x]]%mod;f[y]=f[y]*f[x]%mod;fa[x]=y;siz[y]+=siz[x];}if(op==2){cin>>x;x=(x+ans)%n;x++;x=cx(x);ans=f[x];cout<<ans<<'\n';}}return 0;
}
http://www.wxhsa.cn/company.asp?id=1668

相关文章:

  • 近五年 CSP NOIP 补题记录
  • CF2111C
  • 唐人日记
  • CF2111B
  • ABC394F
  • LG11793
  • ABC394G
  • MX 炼石 2026 NOIP #5
  • 0126_状态模式(State)
  • Visual Studio 2026 预览体验版现已发布,一起来看看带来哪些新功能!
  • 基于RK3568/RK3576/RK3588/全志H3/飞腾芯片/国产UOS等/国标GB28181监控系统
  • Go语言读写锁(RWMutex)底层原理详解
  • 【GitHub每日速递】无需提示词!Nano Bananary香蕉超市:AI绘画玩法多到停不下来
  • 小题狂练 (J)
  • Drift数据库开发实战:类型安全的SQLite解决方案
  • DELPHI FireDAC连接EXCEL文件
  • 读人形机器人09教育行业
  • PHP判断字符串是否包含中文
  • 当我们红尘作伴,活得潇潇洒洒
  • 诡异的mysql8的问题
  • 二叉树理论
  • 支付中心的熔断降级要怎么做
  • 协议版iM蓝号检测,批量筛选iMessages数据,无痕检测是否开启iMessage服务
  • 栈和队列总结
  • 工业互联网认知实训台-一句话介绍
  • 湾区杯 SilentMiner WP
  • Python-课后题题目-1.1编程世界初探
  • Python-课后题题目-1.2初识python语言
  • node和npm相关的记录
  • 在Spring boot 中使用@master 设置主从数据库