2025 第一轮 A 百度之星题解

简要题目

有一棵 72 个节点的树。令\(w(u, v)\)表示树上两点之间的简单路径。称一个树上所有简单路径组成的集合的子集 S 是好的,当且仅当树上每条边\((u, v)\)都被恰好一条 S 中的路径覆盖。

对于一个好的集合 S,设\(f(S)\)表示对所有 1≤i≤n,结点 i 在 S 中作为某条路径端点的次数的最大值,即\(f(S)=\max _{i=1}^{n}(\sum_{w(u, v) \in S}[u=i \vee v=i])\)。需要统计有多少个好的集合 S 满足\(f(S)\)取到所有好的集合 T 中\(f(T)\)的最小值,答案对 998244353 取模。

注:

  • 一条路径是简单路径,当且仅当其不重复经过任何结点。树上任意两个结点之间有且仅有一条简单路径。

  • 树上所有简单路径组成的集合,可以看做对每个 1≤u≤v≤n 的节点对\((u, v)\),\(w(u, v)\)组成的集合。

  • 称边\((u, v)\)被简单路径\(s \leadsto t\)覆盖,当且仅当点 u,v 均在\(s \leadsto t\)的简单路径上。

分析过程

1. 找浅显性质:

  • 边经过恰好一次,点重复经过,但是这个性质好像没用,再找比较简单的、特殊的情况。

    • 链:显然就是 1,链接方法从头到尾。

    • 菊花图:发现对于奇数还是偶数好像有区别,就分开看。

    *   对于奇数个叶子,有一个叶子 -- 根,其余都是叶子 -- 叶子。

    *   对于偶数个都是叶子 -- 叶子,但 f 值都为 1。

*   再构造一个稍微一般一点的,发现 f 值都为 1,猜想 f 值始终为 1。

2. 证明 f 值始终为 1:

  • 证明每个点的最大成为端点数,就给点们分类证,显然分成做端点的点和不做端点的点。

    • \(f \ge 1\)由构造易证。

    • 反证法证明\(f \leq 1\):这里显然在考察贪心,所以用贪心的方法,设计决策,可以用转化法、决策包容性、范围缩放法,证明不等式,用反证法,证明\(f>1\)不成立。

      • 范围缩放法:不涉及范围,不可用。

      • 决策包容性:不知道怎么决策,不可用。

      • 转化法:可以用,如果一个点 u 是两条路径的端点,那么这两条路劲可以在 u 合二为一;如果一个点 u 是三条路径的端点,那么这三条路劲中的两条可以在 u 合二为一,所以 u 就是一个路径的端点。

      • u 是奇数个路径的端点,可以转化成 u 是一个路劲的端点;u 是偶数个路劲的端点,可以转化成 u 不做端点。

3. 计数:

  • 不是搜索就是递推就是推公式。

    • 但是这个题的证明 f==1 的过程带来的构造启示:先让每个边都是一个路径,在对作为端点数 1 的点进行合并,我们只需要看看每个点如何合并,因为每个点的合并方法是并列关系,所以只需分别对于每个点求出把这个点合并成只作为一个端点的方案数,再用乘法原理将他们相乘即可。

    • 看看每个点怎么合并:

      • 先看怎么合并和谁有关,显然只与当前点最为几次端点有关,联系上文,每个点最初作为(节点度数)个端点,且每个端点如何合并,不影响其他点。

      • 根据菊花图的分析,奇数度数和偶数度数不一样,分开分析:分析流程,将这个点与其连向的点组成菊花图,分析叶子 -- 叶子。

* 度数偶数:1 与其他 7 个点连,7 种;第二个点与剩下(8-2-1)=5 个点连,5 种,以此类推。方案数(opeven)\(opeven=(d[u]-1)!!\)。

度数奇数:最后剩下一个点与 u 相连,由于对称性,剩余哪个都一样,所以的系数是\(opodd = d[u]* opeven_{d'=d[u]-1}=d[u]*(d[u]-2)!!=d[u]!!\)。

代码实现

            1) #include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10, M = 998244353;
// const int N = 15, M = 998244353;
int d[N];
int jie[N];
signed main()
{
jie[1] = 1;
for (int i = 3; i <= N - 2; i += 2)
jie[i] = (jie[i - 2] * i) % M;
int T;
cin >> T;
while (T--)
{
int n;
cin >> n;
memset(d, 0, sizeof d);
for (int i = 1; i < n; ++i)
{
int t1, t2;
cin >> t1 >> t2;
d[t1]++;
d[t2]++;
}
int ans = 1;
for (int i = 1; i <= n; ++i)
{
if (d[i] % 2)
ans = (ans * jie[d[i]]) % M;
else
ans = (ans * jie[d[i] - 1]) % M;
}
cout << ans << endl;
}
return 0;
}

2025百度之星第一轮T1:Bus Station题解的更多相关文章

  1. 2014百度之星第一题Energy Conversion

    Energy Conversion Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. hdu 6114 百度之星复赛B T1

    Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子. 一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中 ...

  3. 2018百度之星B轮 degree

    degree Accepts: 1581 Submissions: 3494 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/1 ...

  4. HDU-6668-Game 百度之星第一场B

    在多个连续的区间段中,选出连续重复度最高的区间,这样连续选出多个重复度最高的不相交区间,然后从第一个区间的左边已经右边开始,连续贪心即可,答案取最小值 #include<iostream> ...

  5. 【百度之星2014~初赛(第二轮)解题报告】JZP Set

    声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...

  6. 百度之星B题(组合数)

    Problem B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  7. 【百度之星2014~初赛(第二轮)解题报告】Chess

    声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载.可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...

  8. 百度之星A

    Scenic Popularity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 2014百度之星预赛(第二场)——Best Financing

    2014百度之星预赛(第二场)--Best Financing Problem Description 小A想通过合理投资银行理財产品达到收益最大化.已知小A在未来一段时间中的收入情况,描写叙述为两个 ...

  10. 百度之星2017初赛A-1005-今夕何夕

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. mysql设置时区

    参考:https://blog.csdn.net/vkingnew/article/details/82149726 查看时区 show variables like '%time_zone%'; 设 ...

  2. windows oracle11gR2安装使用

    安装 plsql安装 https://blog.csdn.net/li66934791/article/details/83856225 配置tns # tnsnames.ora Network Co ...

  3. 信息资源管理综合题之“H7N9禽流感-同学有无权利要求政府疫情进行信息公开 和 依据什么法律 和 相关法律的作用是什么 和 结合案例”

    一.案例:网络新闻报道某省有一名疑似H7N9禽流感病毒患者就医后不治身亡,于是刘苗红同学写信给该省政府,要求公开H7N9相应时期的信息 1.刘苗红同学有无权利要求省政府对H7N9疫情进行信息公开? 2 ...

  4. 信息资源管理综合题之“LJ集团的知识库和员工离职客户流失问题”

    一.集团是北京的一家规模巨大的房地产投资公司,早在15年前,该公司出现了如下几个问题:每个业务员手上的客户资料,其他人无法得知,从而导致员工离职时会流失大量潜在客户:业务员繁忙的时候,无法满足客户用户 ...

  5. 编译原理:python编译器--运行时机制

    python的运行时机制的核心 -- python对象机制的设计 理解字节码的执行过程 用 GDB 跟踪执行一个简单的示例程序,它只有一行:"a=1". 对应的字节码如下.其中,前 ...

  6. 网络编程:阻塞I/O和线程模型

    线程 进程模型在处理用户请求的过程中,进程切换上下文的代价比较高,而,一种轻量级的模型可以处理多用户连接请求,那就是线程模型. 线程(thread)是运行在进程中的一个"逻辑流", ...

  7. 【公众号搬运】React-Native开发鸿蒙NEXT(6)

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  8. 使用Flask和OpenAI构建实时AI聊天应用

    在当今AI技术迅速发展的时代,将AI能力集成到Web应用中已成为一种趋势.本文将分享我如何使用Flask框架和OpenAI API构建一个实时聊天应用,让用户可以与AI助手"Melon&qu ...

  9. VS下进行CUDA编译时error MSB3721相关的原因之一

    报错:"1>D:\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomization ...

  10. 探秘Transformer系列之(36)--- 大模型量化方案

    探秘Transformer系列之(36)--- 大模型量化方案 目录 探秘Transformer系列之(36)--- 大模型量化方案 0x00 概述 0x01 8位量化 1.1 LLM.int8() ...