CSP-S 29

news/2025/10/20 21:50:03/文章来源:https://www.cnblogs.com/HS-fu3/p/19153750

10.11

t3

赛后才看懂题面 \(\ldots\)

妈妈我会推式子!(骗你的其实我不会)

推完式子就过了。

考虑先求出 \(1\) 为根时的答案,之后换根即可。

开始拆贡献ing

对于根结点,由于一开始就是黑色所以一直有贡献,即 \((n-1)\times (n-1)!\)

这个应该挺显然的就不解释了。

之后考虑对于非根结点如何计算贡献。

观察到对于一个点,只要该结点子树内有结点被染过色,则该结点一直产生贡献。

于是对于每个非根结点,我们找到它子树内有结点第一次被染色,该结点加入整棵树的位置,即可统计该结点产生的贡献。

(这个位置我总感觉表述不清,具体的,对于一棵五个结点的树,有五个位置,令其根节点为 \(1\) (此时一号位置已固定),若 \(2\) 的子树内的结点第一次被染色是在三号位置,则 \(2\) 产生三次贡献(从三以后都产生贡献),不懂手模一下)

令当前结点为 \(u\) ,当前子树大小为 \(s_u\) .

贡献即为

$\sum_{i=1}^{n-s_u} \binom{s_u}{1} \times\binom{n-i-1}{s_u-1} \times(s_u-1)! \times (n-s_u-1)! \times(n-i) $

前两个是组合数,中间两个是阶乘,最后一个就是括号。

开始逐步解析:

首先看 \(\sum\) 上下界,\(i\) 枚举 \(u\) 子树内结点首次出现的位置,(此时我们将位置规定为 \(1\)\(n-1\),所以起始为 \(1\)),最晚出现位置就是剩余位置数等于 \(s_u\) ,故上界为 \(n-s_u\) ,将每个可能出现的位置产生贡献累加即为该结点的贡献.

第一个组合数表示从 \(s_u\) 个结点中选出 \(1\) 个放在该位置上。

第二个组合数表示将剩余的 \(s_u-1\) 个结点随意放到剩余的 \(n-i-1\) 个位置上。

第一个阶乘表示 \(s_u-1\) 个结点内部顺序可变,乘上其全排列。

第二个阶乘表示 \(n-s_u-1\) 个结点(即外部剩余结点)位置可变,乘上其全排列。

最后那部分就是贡献,该结点从次位置到最后一直产生贡献,故乘上 \(n-i\)(前面的组合数和阶乘处理的都是情况数).

然后盯着这坨式子 \(\ldots\)

化简吧!!!

省流:结果为 \(\frac{s_u}{s_u+1}\times n!\)

开始化简:

原式为:

$\sum_{i=1}^{n-s_u} \binom{s_u}{1} \times\binom{n-i-1}{s_u-1} \times(s_u-1)! \times (n-s_u-1)! \times(n-i) $

$\sum_{i=1}^{n-s_u} s_u!\times\binom{n-i-1}{s_u-1} \times (n-s_u-1)! \times(n-i) $

$s_u!(n-s_u-1)! \sum_{i=1}^{n-s_u} \binom{n-i-1}{s_u-1} \times(n-i) $

\(s_u!(n-s_u-1)! \sum_{i=1}^{n-s_u} \frac{(n-i)!}{(s_u-1)!(n-s_u-i)!}\)

\(s_u (n-s_u-1)! \sum_{i=1}^{n-s_u} \frac{(n-i)!}{(n-s_u-i)!}\)

那之后怎么办?

继续推!

需要用到结论:

$\sum_{k=s}^{n} \binom{k}{s} =\binom{n+1}{s+1} $

考虑换元,令 \(k=n-i\)

\(s_u (n-s_u-1)! \sum_{k=s}^{n-1} \frac{k!}{(k-s_u)!}\)

原来累加的 \(n-i\) 是从 \(n-s_u-1\)\(s_u\) ,现在是从 \(s_u\)\(n-s_u-1\) ,故等价。

$s_u (n-s_u-1)!s_u! \sum_{k=s}^{n-1} \binom{k}{k-s_u} $

\(s_u (n-s_u-1)!s_u!\binom{n}{s+1}\)

\(\frac{s_u (n-s_u-1)!s_u!n!}{(n-s_u-1)!(s_u+1)!}\)

\(\frac{s_u}{s_u+1}n!\)

推完了哈哈哈!

按照式子统计贡献,最后换根即可。

code

点击查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 10;
const int mod = 998244353;
int n, ans, Ans[N];
int siz[N], jc[N];
vector<int> e[N];inline int km(int a, int b)
{int ans = 1;while (b){if (b & 1)ans = ans * a % mod;a = a * a % mod;b >>= 1;}return ans;
}void dfs1(int x, int f)
{siz[x] = 1;for (auto y : e[x]){if (y == f)continue;dfs1(y, x);siz[x] += siz[y];}if (x != 1)ans = (ans + siz[x] * km(siz[x] + 1, mod - 2) % mod * jc[n] % mod) % mod;
}void dfs2(int x, int f)
{if (x != 1){int now = Ans[f];now = (now - siz[x] * km(siz[x] + 1, mod - 2) % mod * jc[n] % mod + mod) % mod;now = (now + (n - siz[x]) * km(n - siz[x] + 1, mod - 2) % mod * jc[n] % mod + mod) % mod;Ans[x] = now;}for (auto y : e[x]){if (y == f)continue;dfs2(y, x);}
}signed main()
{// freopen("black.in", "r", stdin);// freopen("black.out", "w", stdout);ios::sync_with_stdio(0);cin.tie(0);cin >> n;jc[0] = 1;for (int i = 1; i <= n + 1; ++i)jc[i] = jc[i - 1] * i % mod;for (int i = 1, u, v; i < n; ++i){cin >> u >> v;e[u].push_back(v);e[v].push_back(u);}ans = (ans + (n - 1) * jc[n - 1] % mod) % mod;// cerr << "ans=" << ans << "\n";dfs1(1, 0);Ans[1] = ans;dfs2(1, 0);for (int i = 1; i <= n; ++i)cout << Ans[i] << "\n";return 0;
}// s/(s+1)*f[n]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.20每日总结

今天主要的课程有软件设计,软件开发案例分析,大数据技术,物联网工程。完成了好几项作业,满课还是太忙太累了,软考网课开始第三章。

CSP-S 31

10.1410.14 看大家得分跟信心赛似的,就我一个唐诗写了一场暴力 \(\ldots\) 开场t1没切出来就开始慌了,之后就想着多打暴力拿部分分,导致t2得出的性质没有推广,t3,t4暴力都没写出来(这俩得出性质/部分性质后比暴力…

2025网络安全振兴杯wp

振兴杯wp web1 神探狄仁杰在js和源代码,以及关于里面有flag的base64字段 css中关于的源代码中然后解密就行了 web2Darksale 这个是一个原型链污染 我们发现购买的金额可以被改变我们发现改价格后会回显出来我们尝试修…

ES原理、zookeeper、kafka

ES原理、zookeeper、kafkaES高级 ES底层原理 协调节点是 Elasticsearch 中接收客户端请求、将请求转发到相关数据节点、并汇总最终结果返回给客户端的中心路由节点 Cluster State 是 Elasticsearch 集群的元数据大脑,…

CF1606E Arena 题解(动态规划)

考虑设 \(f_{i,j}\) 表示现在存活 \(i\) 个人,血量最大的人为 \(j\)。这么设是因为注意到有没有胜者其实之和血量最大的是谁,以及有多少个血量最大的有关。 边界情况 \(f_{1,i}=0\)。 考虑转移。如果 \(j<i\),则…

服务器CPU市场概况2025

2025年的服务器CPU市场正处于关键转型期。传统的x86架构(以Intel和AMD为代表)依然占据主导,但基于Arm的解决方案正在快速崛起。随着人工智能(AI)、云计算和高性能计算(HPC)的普及,CPU的设计趋势正在朝着能效优…

CSP-S 24

9.21~9.2?9.21 今天开始集训告一段落了,去补文化课一周。 如果写不完回来会补(?) 115=100+0+15 t1 先等会 t2 先等会 t3 9.22:回来补债了 \([\gcd(i,j)=1]=[\gcd(p_i,p_j)=1]\) 这个限制初看好像很难转化,只能猜…

正睿 2025 NOIP20 连测 Day5 做题记录

T1给 \(m\) 个质数,第 \(i\) 个质数 \(p_i\) 出现了 \(n_i\) 次。求一种划分质数的方案,使得第一个集合的和等于第二个集合的乘积。萌萌题,注意到最后相当于是要求 \(p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_k^{\alp…

29-腾讯云COS接入指南与价格说明

腾讯云对象存储(COS)接入流程与价格说明 一、腾讯云COS简介 腾讯云对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、高可靠性和高安全性等特点。用户可…

LLM学习记录DAY7

📘今日LLM学习笔记总结 一、大模型解码策略 1.1 自回归解码定义:逐词生成下一个词,基于已生成内容继续生成。 流程:输入词序列 ( u ) 重复:模型输出下一个词的概率分布 ( P ) 采样或选择下一个词 ( u ) 将 ( u )…

CSP-S 23

9.179.17 109=9+100 赛时将剩余时间“明智”的投入t4,结果就是后两题没分。 t1 三维前缀和+二分答案 写了个假的kdt调了2h... 二分显然是好想的。 看值域考虑复杂度: \(256\times 256\times 256\times 8=134217728\) …

Recall

可惜了,这静谧的长夜。 是夕阳,余晖照在我的肩上。 惨白的灯喧哗着。 昏黑,安静的可怕。 滴答,滴答。 滴答,滴答。 昏黑,安静的可怕。 惨白的灯喧哗着。 是夕阳,余晖照在我的肩上。 可惜了,这静谧的长夜。

CSP-S 20

9.119.11 今天是挂分的好日子~~~ 101=0+10+91 t1 追逐游戏 (chase) 倍增+k祖先 算了不想写了....... 第2次没保存然后死机丢失了... 不难理解也不难实现,细节手模即可。 t1 就这样吧,看代码。 code点击查看代码 #…

Flutter应用设置插件 - 轻松打开iOS和Android系统设置

一个功能强大的Flutter插件,支持从应用中直接打开iOS和Android系统的各种设置页面,包括位置、Wi-Fi、通知、蓝牙等系统设置,简化了用户设置跳转流程。app_settings 一个用于从Flutter应用中打开iOS和Android手机设置…

CSP-S 22

9.169.16 原来史可以连着吃 挂了100 t1 简单贪心,不多解释。 没有大样例爆了 code点击查看代码 #include <bits/stdc++.h> #define int long long using namespace std; const int inf = 1e18; int minn; int T…

/usr/bin/sudo 二进制文件的权限有问题,导致所有用户都无法使用 sudo

[root@node1 sudoers.d]# su - student [student@node1 ~]$ sudo whoami sudo ls /root -bash: /usr/bin/sudo: Permission denied -bash: /usr/bin/sudo: Permission denied 问题很明确了!在 node1 上,/usr/bin/sud…

MySQL 8.0.43社区版本安装流程

MySQL 8.0.43社区版本安装流程> 1. MySQL的下载 点击MySQL官网地址进入https://www.mysql.com/cn/,选择页面download,选择社区版本下载。选择对应自己主机机型下载Windows或者Linux版本的,这里以Windows版本为例子…

CSP-S 19

9.109.10 125=10+20+75+20 废话 模拟赛能不能类人一点??? 因为四道题所以四个样例是吧,你给那小样例有任何作用吗我请问呢? t1 染色(color) 结论题 赛时想假了(你但凡有个稍微大点的样例我也不会想这么假) 显然…