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

AT_abc290_f 题解

先考虑一个序列的贡献,
一个序列 \(X\) 要满足存在对应的树的充要条件是 \(\sum X_i =2N-2\)
如何构造一棵直径最长的树?不妨令根节点度数为 \(1\),每次可以在当前最深的点下接上一个非叶子节点,使最长链延长,再算上链的末尾的一个叶子节点,记序列中大于 \(1\) 的数的数量为 \(k\),序列的贡献为 \(k+1\)
比如,对于序列 \([4,3,2,1,1,1,1,1]\) 可以这样构造 \(\darr\)

            O|O/ \O   O/|\O O O|O

于是可以枚举序列中大于 \(1\) 的数量 \(k\) ,统计这样的序列的数量:

  • 选择 \(k\) 个位置不为 \(1\),方案数为 $C_n^k $。
  • 接下来需要满足 \(\sum X_i =2N-2,\sum(X_i-1)=n-2\)。只考虑原来大于 \(1\) 的数 \(x_1,x_1,\dots,x_k,x_i=X_i-2\),即 \(x_i\geq 0\);需要求方程 \(x_1+x_2+\dots+x_k=N-k-2\) 的非负整数解数量,使用插板法,解的数量即为 \(C_{(N-k-2)+(k-1)} ^ {k-1}=C_{N-3}^{k-1}\)

\[\begin{aligned} ans &= \sum_{k=1}^{N-2} (k+1)C_N^k C_{N-3}^{k-1} \\&= \sum_{k=1}^{N-2}kC_N^k C_{N-3}^{k-1}+\sum_{k=1}^{N-2}C_N^k C_{N-3}^{k-1} \\ \end{aligned} \]

\(kC_r ^k =rC_{r-1}^{k-1}\)(直接展开可证明),可知,

\[\begin{aligned} ans &= N\sum_{k=1}^{N-2}C_{N-1}^{k-1} C_{N-3}^{k-1}+\sum_{k=1}^{N-2}C_N^k C_{N-3}^{k-1} \\&= N\sum_{k=0}^{N-3}C_{N-1}^{k} C_{N-3}^{k}+\sum_{k=0}^{N-2}C_N^k C_{N-3}^{k-1} \\&= N\sum_{k=0}^{N-3}C_{N-1}^{k} C_{N-3}^{N-k-3}+\sum_{k=0}^{N-2}C_N^k C_{N-3}^{N-k-2} \\ \end{aligned} \]

\(\sum_{i=0}^{x}C_n^iC_m^{x-i}=C_{n+m}^x\)(由组合意义可证明),可知,

\[\begin{aligned} ans &= NC_{2N+4}^{N-3}+C_{2N-3}^{N-2} \\ \end{aligned} \]

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=998244353,N=2000000;
ll T,n,jc[N+6],ijc[N+6],ans;
inline ll qpow(ll a,ll b){ll ret=1;while(b){if(b&1)ret=ret*a%mod;a=a*a%mod;b>>=1;}return ret;
}
inline ll C(ll m,ll n){if(m<0)return 0;return 1ll*jc[n]*ijc[m]%mod*ijc[n-m]%mod;	
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);jc[0]=ijc[0]=1;for(ll i=1;i<=N;i++)jc[i]=1ll*jc[i-1]*i%mod;ijc[N]=qpow(jc[N],mod-2);for(ll i=N-1;i>=1;i--)ijc[i]=1ll*ijc[i+1]*(i+1)%mod;cin>>T;while(T--){cin>>n;ans=1ll*(n*C(n-3,2*n-4)%mod+C(n-2,2*n-3))%mod;	cout<<ans<<"\n";}return 0;
}
http://www.hskmm.com/?act=detail&tid=21099

相关文章:

  • 一张图读懂绿电直连系统架构 - 智慧园区
  • P5469 [NOI2019] 机器人 题解
  • 题解:P14080 [GESP202509 八级] 最小生成树
  • 实用指南:Spring Cloud Gateway 实战:全局过滤器日志统计与 Prometheus + Grafana 接口耗时监控
  • GTSAM 中自定义因子(Custom Factor)的详解和实战示例 - 指南
  • AtCoder AGC073 A 题解
  • CF506C Mr. Kitayuta vs. Bamboos 51nod1457 小K vs. 竹子 题目分析
  • 北京 意大利 硕士学签/D签 vfs代办 材料清单
  • temp
  • 我有园子了
  • 使用 Jenkins 的流水线方案实施 CI/CD
  • 加密的病例单
  • 详细介绍:视频融合平台EasyCVR构筑智慧交通可视化管理与智能决策中枢
  • docker 在x86上build arm 镜像
  • 9.29软工
  • 不一样的.NET烟火,基于Roslyn的开源代码生成器
  • 复刻江协旋钮控制模块
  • 告别硬编码!5个让Web自动化脚本更稳定的定位策略
  • 从零开始,使用Idea工具搭建一个springboot项目
  • 最优/极值问题的算法选择
  • 第三方控件库的添加和使用
  • C4NR PVP服务器1.2 天穹炮塔更新
  • 树形dp [JOI Open 2020] 发电站 / Power Plant
  • 深入解析:灵画-AI绘画小程序
  • AT_arc156_b [ARC156B] Mex on Blackboard
  • 产品排序
  • 环形链表II-leetcode
  • ubuntu20.04安装nvidia显卡
  • [线段树系列 #6] 标记永久化
  • 9.29