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

题解:P7275 计树

题意:给出一个数 \(n\),问对于所有节点 \(x\) 都满足存在 \(|x-y|=1\) 使得 \((x,y)\) 有边的树有多少个,\(n\le 10^5\)

做法:

我们肯定是考虑直接钦定连续段然后去计算,但是因为有可能在相邻段间连出边就爆炸了,考虑容斥,那么现在有两个问题。

  • 如何对于一种特定的连续段划分计算答案。

  • 如何分配容斥系数。

首先对于第一个问题比较简单,这是经典结论。现在有 \(n\) 个点,假设被分成 \(A_1,A_2,\cdots A_k\) 这些连通块,那么使他们联通的方案数为 \(n^{k-2}\prod\limits_{i=1}^k A_i\)。这个比较经典就不再证明。

然后在这个题中,假设我们划分出来 \(A_1,A_2,\cdots A_n\) 这些连续段,那么我们不妨把一个段的权值设为 \(A_i\times n\),最后除以 \(n^2\) 就是答案。

然后对于第二个我们考虑应该怎么做,我们考虑一个连续段的权值应该是 \([len\ge 2]\),我们枚举内部划分的情况,希望要得到一个柿子:

\[[len\ge 2] = \sum_{A_1+A_2+\cdots+A_k=len}\prod_{i=1}^k f(A_i) \]

这里 \(f(x)\)\(x\) 的容斥系数。

我们用 \(F\) 这个多项式来改写一下,\(F\)\(k\) 次项系数即是 \(f(k)\)

我们枚举 \(k\),那么其实我们可以把后面这个东西写成 \([x^{len}]F^k(x)\)。整合一下右侧,其实右侧就等于 \(\frac{1}{1-F(x)}-1\)。左侧其实就是 \((1+x+x^2+\cdots)-(1+x)=\frac{1}{1-x}-(1+x)\)

把这个方程解出来可以得到 \(F(x)=\frac{x^2}{x^2-x+1}\)

那么剩下就很好做了,我们直接记 \(G(x) = \sum i\times n\times f(i)x^i\),答案就是 \(\frac1{n^2}\times \frac{1}{1-G(x)}[x^n]\)

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 5e5 + 5, mod = 998244353, gb = 3, gi = (mod + 1) / gb;
int qpow(int x, int k, int p) {int res = 1;while(k) {if(k & 1)res = res * x % p;x = x * x % p, k >>= 1;}return res;
}
int rev[maxn];
void init(int len) {for (int i = 0; i < len; i++) {rev[i] = rev[i >> 1] >> 1;if(i & 1)rev[i] |= (len >> 1);}
}
struct Poly {vector<int> a;void resize(int N) {a.resize(N);}int size() {return a.size();}int& operator[](int x) {return a[x];}void NTT(int f) {for (int i = 0; i < size(); i++)if(i < rev[i])swap(a[i], a[rev[i]]);for (int h = 2; h <= size(); h <<= 1) {int d = qpow((f == 1 ? gb : gi), (mod - 1) / h, mod);for (int i = 0; i < size(); i += h) {int nw = 1;for (int j = i; j < i + h / 2; j++) {int a0 = a[j], a1 = a[j + h / 2] * nw % mod;a[j] = (a0 + a1) % mod, a[j + h / 2] = (a0 - a1 + mod) % mod;nw = nw * d % mod;}}}if(f == -1) {int inv = qpow(size(), mod - 2, mod);for (int i = 0; i < size(); i++)	a[i] = a[i] * inv % mod;}}friend Poly operator*(Poly f, Poly g) {int len = 1, t = f.size() + g.size() - 1;while(len < t)len <<= 1;init(len), f.resize(len), g.resize(len);f.NTT(1), g.NTT(1);for (int i = 0; i < len; i++)f[i] = f[i] * g[i] % mod;f.NTT(-1);f.resize(t);return f; }void get_neg() {for (int i = 0; i < size(); i++)a[i] = (mod - a[i]) % mod;}friend Poly operator+(Poly f, int v) {f[0] = (f[0] + v) % mod;return f;}void print() {for (int i = 0; i < size(); i++)cout << a[i] << " ";cout << endl;}
} f;
Poly get_inv(Poly f, int lim) {if(lim == 1) {f.resize(1);f[0] = qpow(f[0], mod - 2, mod);return f;}Poly g = get_inv(f, lim + 1 >> 1);int len = 1;while(len < lim * 2)len <<= 1;init(len);f.resize(lim), f.resize(len), g.resize(len);f.NTT(1), g.NTT(1);for (int i = 0; i < len; i++)f[i] = (2 * g[i] - f[i] * g[i] % mod * g[i] % mod + mod) % mod;f.NTT(-1);f.resize(lim);return f;
}
int n;
signed main() {cin >> n;f.resize(n + 1);f[0] = 1, f[1] = mod - 1, f[2] = 1;f = get_inv(f, n + 1);for (int i = n; i >= 2; i--)f[i] = f[i - 2];f[0] = f[1] = 0;for (int i = 1; i <= n; i++)f[i] = i * n % mod * f[i] % mod;f.get_neg();//(f + 1).print();f = get_inv(f + 1, n + 1);cout << f[n] * qpow(n, mod - 3, mod) % mod << endl;return 0; 
}
http://www.rkmt.cn/news/22948.html

相关文章:

  • mysql新建用户并授权,mysql新建用户并授权完整指南
  • CRC32的直接和反转模式
  • 2025年10月石墨电极厂家推荐榜单详解:从产线到应用看晶碳科技真实表现
  • 2025年西安买房新楼盘口碑排行榜:地建嘉信臻城领跑高端住宅市场
  • 2025年数粒机厂家推荐排行榜,防爆/新型/高速/高精度/智能/大容量/多通道/电子/视觉/全自动/低噪音/制药用/农业用/食品用/电子元件/光电/定制化/鹌鹑蛋/糖果/坚果/药品/片剂数粒机公司推荐
  • git和gitee的学习研究
  • 从“看得见”到“看得懂”:国标GB28181算法算力平台EasyGBS与公安安防数字化的深度融合
  • 山海鲸可视化可以导入哪些常用的3D模型?
  • 读书笔记:什么时候该用B*树索引?一个接地气的解读
  • 2025年工作服厂家权威推荐榜:防静电/劳保/国网/餐厅/工厂/电工/防酸碱/电力/车间/航空/员工工作服,文化衫/T恤/POLO衫/冲锋衣全品类精选
  • 误删 Stash 后的数据恢复实践
  • 2025年10月重庆保洁公司推荐排名:聚焦服务细节与合规风险的避坑手册
  • 2025年10月床垫品牌推荐榜:围绕环保认证与试睡政策的系统化评析
  • 2025年10月上海装修公司推荐榜:极家家居设计标准与施工节点全维度对比
  • 2025年浓缩机厂家权威推荐榜:高效浓缩机/尾矿浓缩机/污泥浓缩机/新型浓缩机/矿用浓缩机/浓密机/中心转动浓缩机/真空浓缩机/污泥脱水机
  • Clip Studio Paint 4.0.3下载地址与安装教程
  • 低代码平台核心概念与设计理念
  • PyTorch nn.Linear 终极详解:从零理解线性层的一切(含可视化+完整代码) - 指南
  • 2025年陶瓷过滤机厂家权威推荐榜:盘式/矿用/全自动陶瓷真空过滤机,真空脱水机,尾矿干排设备,圆盘过滤机源头企业深度解析
  • 使用python脚本大批量自动化处理图片上的ai水印
  • springboot结合阿里巴巴easyexcel,实现一键导出数据到Excel中
  • 深入解析:PX4 无人机地面调试全攻略:从机械到参数的系统优化
  • 2025年陶瓷过滤板厂家推荐排行榜,白刚玉陶瓷过滤板,棕刚玉陶瓷过滤板,扇形陶瓷板,真空陶瓷过滤板,陶瓷滤膜,陶瓷过滤机配件公司推荐
  • springboot结合阿里巴巴easyexcel,实现一键把Excel数据导入数据库
  • 2025年工业设备安装厂家权威推荐榜:管道/电气/暖通空调/空压系统/纯水系统/厂房通风/车间配电/机械设备专业安装服务全景解析
  • 实习内推】机器人操作系统Dora-rs团队招募实习生(北京)
  • 机器人控制利器:MPC入门与实践解析 - 指南
  • 2025年轧钢设备厂家权威推荐榜:冷轧机、热轧机源头生产厂家,技术实力与市场口碑深度解析
  • 实用指南:在鸿蒙NEXT中发起HTTP网络请求:从入门到精通
  • string略解