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

随笔 -【CF1824B2】 LuoTianyi and the Floating Islands (Hard Version)

还是头一次往博客园投递文章,其实是从个人总结里搬出来的。

0 题目大意

\(n\) 个点的树上选 \(k\) 个点,定义”好点“为离这 \(k\) 个点的距离之和最小的点,求好点的期望值,模 \(10^9+7\)

1 思路

1.1 利用距离之和找性质

我下面这段写得好绕啊,写了挺久的吧,TAT。本来想让豆包帮我改改,感觉豆包改得更加屎山了,所以还是算了。

假设 \(x\)\(y\) 都是”好点“ ,我们设 \(x\) 的子树有 \(s\) 个选中的点,则剩下的选中的点就有 \(k-s\) 个。

考虑从 \(x\) 移动到 \(y\) ,那么 \(x\) 离所有子树里的点都各远了 \(1\),距离之和增加 \(s\) ,同样地, \(x\) 也离子树外的点都近了 \(1\) ,总距离减少 \(k - s\)

因为两点均为好点,所以从 \(x\) 移动到 \(y\) ,距离之和是不变的,增加的距离等于减少的距离。

即:\(s = k-s \Leftrightarrow 2s = k \Leftrightarrow s = \frac{k}{2}\)

1.2 按 k 的奇偶性分类讨论

  • 如果 \(k\) 是奇数,那么 \(2s \neq k\) ,也就是说不存在两个”好点“,从一个”好点“出发跳到别的点,距离之和一定会变化,所以只存在一个”好点“。对于所有 \(k\) 为奇数的情况,都可以直接输出一个 \(1\)

  • 反之,如果 \(k\) 是偶数,就有 \(s = \frac{k}{2}\) 。那么从一个”好点“出发, 必定存在这样一条边,使得去掉这条边之后,树变成的两个连通块中,均有 \(\frac{k}{2}\) 个选中的点。

于是我们枚举每个点的子树大小 \(x\) :从 \(x\) 里选 \(\frac{k}{2}\) 个节点,方案数是 \((^{x}_{\frac{k}{2}})\) ;同样地,从另一个大小为 \(n-x\) 的连通块里选 \(\frac{k}{2}\) 个节点,方案数是 \((^{n-x}_{\frac{k}{2}})\) 。两个相乘,就是这个点的总方案数,最后再乘上一个概率,也就是除以 \((^{n}_{k})\) ,就是这个点的期望。最后将所有的期望相加即可。

注意:我们本质上是按边枚举的,每种选法的好点数量 \(= 1 +\) 满足条件的边数,所以总和 \(=\) 点的总选法数 \(+\) 边贡献和,最终答案还要加上一个 \((_{k}^{n})\) 表示选点的方案数。

2 代码

没有注释因为懒得写

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll M = 1e9+7;
const int N = 1000005;
ll qp(ll x, ll y) {ll ret = 1;while(y) {if(y&1) ret = ret*x%M;x = x*x%M;y >>= 1;}return ret;
}
ll fc[N], inv[N], ans, sz[N], n, k;
ll C(ll x, ll y) {if(y<x || x<0 || y<0)return 0;return fc[y]*inv[x]%M*inv[y-x]%M;
}vector<ll> g[N];
void dfs(ll u, ll fa) {sz[u] = 1;for(ll v : g[u]) {if(v == fa) continue;dfs(v, u);sz[u] += sz[v];ans = (ans+C(k/2, sz[v])*C(k/2, n-sz[v])%M)%M;}
}int main() {fc[0] = inv[0] = 1;for(ll i=1; i<N; i++)fc[i] = fc[i-1]*i%M,inv[i] = qp(fc[i], M-2);scanf("%lld%lld", &n, &k);if(k&1) {puts("1");return 0;}for(ll i=1, u, v; i<n; i++) {scanf("%lld%lld", &u, &v);g[u].push_back(v);g[v].push_back(u);}ans = C(k, n);dfs(1, 0);printf("%lld\n", ans*qp(C(k, n), M-2)%M);return 0;
}
http://www.jsqmd.com/news/415210/

相关文章:

  • 基于3dtlies的高效网络复杂BIM模型可视化方法
  • 2026年木纹铝板厂家推荐:冲孔铝单板、冲孔铝板、双曲铝单板、双曲铝板、幕墙铝单板、异型铝板、异形铝单板选择指南 - 优质品牌商家
  • 公司抢着掏钱让考的 PMP,到底藏着多少门道?
  • 2026年冲孔铝板厂家权威推荐榜:穿孔铝单板/花纹铝板/蜂窝铝单板/雕花铝单板/冲孔铝单板/双曲铝单板/选择指南 - 优质品牌商家
  • 2026.02 做题笔记
  • 2026通勤与出差高压季的免疫稳态红黑榜:别把熬夜当体能,把系统修复做成默认设置 - 品牌企业推荐师(官方)
  • 2026花粉与过敏高发季怎么稳住呼吸道?别把喷嚏交给天气,把免疫底盘先打牢 - 品牌企业推荐师(官方)
  • 2026年雕花铝板公司权威推荐:雕花铝单板/冲孔铝单板/冲孔铝板/双曲铝单板/双曲铝板/幕墙铝单板/幕墙铝板/选择指南 - 优质品牌商家
  • 2026差旅党免疫力怎么稳?机场高铁人潮中的自保之道:与其“治病”,不如把“养身”做成出行常态 - 品牌企业推荐师(官方)
  • 04 移位操作
  • 2026年双曲铝板厂家权威推荐榜:异形铝单板、木纹铝单板、氟碳铝单板、穿孔铝单板、花纹铝板、蜂窝铝单板选择指南 - 优质品牌商家
  • 告别公众号文章失效!NAS部署一键下载文章工具
  • 哪款代餐减肥效果好?2026懒人减肥代餐产品横评,轻松掉秤不踩雷 - 品牌企业推荐师(官方)
  • 深耕企业AI教育,天扬智能携手火山引擎大模型赋能全场景数智化升级 - 品牌企业推荐师(官方)
  • 这些品类正在闷声发大财,2026出海别错过了
  • 抗生素不是免疫力:2026健康避坑红黑榜,别再用“救火”当“筑墙” - 品牌企业推荐师(官方)
  • 华为首次发布智能体编程平台“码道”:不是拼生成量,而是在百万行 Java、长周期维护与高可靠中运行
  • 深化火山引擎生态合作,天扬智能打造企业AI落地新范式 - 品牌企业推荐师(官方)
  • 2026年2月顺德geo优化公司推荐榜,专业团队与服务流程测评 - 品牌鉴赏师
  • 哪款减肥代餐性价比最高?2026四大瘦身代餐品牌实测报告|瘦身效果 代谢安全深度PK - 品牌企业推荐师(官方)
  • 域名交易平台哪个靠谱?
  • 减脂不挨饿还少反弹?2026轻食减肥代餐四大品牌实测:科学减脂、营养均衡、有效防反弹 - 品牌企业推荐师(官方)
  • 2026结婚钻戒选购指南:从高性价比到情感价值,看这一篇就够了 - 品牌企业推荐师(官方)
  • python项目Ruff插件(vscode)包含Flake8(代码检查)功能,可以通过# noqa对当前行进行取消检测
  • 2026Java 求职速成指南:7 步搞定简历、八股、项目、面试,快速拿 offer!
  • 结婚订婚选什么钻戒好?2026高性价比珠宝品牌权威推荐 - 品牌企业推荐师(官方)
  • 2026年铝板厂家最新推荐:雕花铝单板、雕花铝板、冲孔铝单板、双曲铝单板、幕墙铝单板、幕墙铝板、异型铝板选择指南 - 优质品牌商家
  • OJ模拟游戏
  • 【算法提高篇】(十)树状数组模板题全解析:从基础到进阶,刷完这 6 道吃透 BIT
  • 我给自己装了个AI助手,24小时待命的那种