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

LuoTianyi and the Floating Islands (Hard Version)

LuoTianyi and the Floating Islands (Hard Version)

Problem

有⼀棵 \(n\) 个节点的树,随机选择 \(k\) 个不同节点作为“有⼈的岛屿”,定义⼀个节点是“好岛”,如果它到所有 \(k\) 个有⼈岛屿的距离之和,在所有节点中最⼩。 求“好岛”数量的期望值,对 \(10^9+7\) 取模。

Solution

因为要使离其他几个点的距离最小

在草稿纸上画几个图就会发现

如果 \(k\) 是奇数,那么在图上就只存在一个点满足条件

所以输出1

  • 理解

    因为当一个点是最优点时,一定有某种方法将这个点的子树分成两个部分

    使得两个部分中的有⼈的岛屿个数相同

    而因为是奇数,所以最优点一定在有⼈的岛屿上

如果 \(k\) 是偶数

这里一个错误的思路就是考虑答案整条链(比如我想了好久才跳出来)

但是我们可以对于边进行考虑

枚举每一条边

对于上半部分和下半部分,此时上下的有⼈的岛屿的数量均为 \(k/2\)

直接枚举组合数

\[\binom{siz_u}{\frac{k}{2}} \times \binom{n - siz_u}{\frac{k}{2}}\]

对于边的期望进行累加

众所周知

点的期望 = 边的期望 + 1

Code

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 10, p = 1e9 + 7;
int n, k, fac[N], inv[N], siz[N];
vector <int> e[N];
int qpow(int a, int b) {int res = 1, mul = a;while (b) {if (b & 1) res = res * mul % p;mul = mul * mul % p, b >>= 1;}return res;
}
void pre(int maxn) {fac[0] = inv[0] = 1;for (int i = 1; i <= maxn; i++) fac[i] = fac[i - 1] * i % p;inv[maxn] = qpow(fac[maxn], p - 2);for (int i = maxn - 1; i >= 1; i--) inv[i] = inv[i + 1] * (i + 1) % p;
}
int C(int n, int m) {if (n < 0 || m < 0 || m > n) return 0;return fac[n] * inv[m] % p * inv[n - m] % p;
}
int ans = 0;
void dfs(int u, int fa) {siz[u] = 1;for (auto v : e[u]) {if (v == fa) continue;dfs(v, u);siz[u] += siz[v];}ans += C(siz[u], k / 2) * C(n - siz[u], k / 2) % p;ans %= p;
}
signed main() {cin >> n >> k;pre(n);if (k & 1) {cout << 1; return 0;}for (int u, v, i = 1; i < n; i++) cin >> u >> v, e[u].emplace_back(v), e[v].emplace_back(u);dfs(1, 0);cout << (1 + ans * qpow(C(n, k), p - 2)) % p;return 0;
} 
http://www.jsqmd.com/news/413042/

相关文章:

  • 2026哪个平台买机票便宜?实用省钱攻略及平台推荐 - 品牌排行榜
  • Sentence-Transformers 深度解析:超越基础嵌入,构筑现代化语义智能应用
  • 双环节快递分拣流水线——串联排队系统模拟仿真(2+3)
  • 基于Java+SpringBoot+SSM,SpringCloud宠物社区(源码+LW+调试文档+讲解等)/宠物交流平台app/宠物爱好者社区app/宠物社交应用app/宠物互动社区app
  • 移动端开发工程师职位全面解析与面试准备指南
  • 移动端开发工程师职业指南:Android/iOS/鸿蒙方向
  • Android开发工程师技术能力深度解析与高阶面试评估体系
  • 彩礼与婚姻稳定关系研究结论
  • 2012年银价:1克10元
  • 大话西游2 科举答题器 多关键字版
  • DataClaw是什么?Openclaw picoclaw zeroclaw losterAI EasyClaw 又又又又双叒叕是些什么?
  • What is the Artificial Intelligence I am studying?
  • 梯度提升树的工程化组件设计:从理论优化到生产实践
  • 自适应夹爪是什么?工作原理是什么?——2026年自适应夹爪厂商名单推荐 - 品牌2025
  • 什么是电动夹爪?——2026年电动夹爪供应商推荐 - 品牌2025
  • 什么是伺服旋转电动夹爪?——2026年伺服电爪品牌推荐名单 - 品牌2025
  • 电动夹爪怎么选不踩坑?选购指南——2026年电爪品牌推荐精选 - 品牌2025
  • 电动夹爪选型分析:三大关键因素与注意事项——2026年电爪供应商推荐 - 品牌2025
  • SpringBoot+Vue web影院订票系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • Java SpringBoot+Vue3+MyBatis 图书商城管理系统系统源码|前后端分离+MySQL数据库
  • 基于SpringBoot+Vue的流浪动物救助网站管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 企业级和餐饮管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 如何选择合适的电动夹爪?选购指南——2026年电爪品牌推荐 - 品牌2025
  • 三指电动夹爪是什么?核心作用有哪些?——2026年三指电爪品牌推荐 - 品牌2025
  • 机器人柔性夹爪有何优势?2026机器人夹爪供应商推荐 - 品牌2025
  • 电动夹爪选型有哪些关键参数?企业选购指南——2026电动夹爪品牌推荐 - 品牌2025
  • 3C 行业电动夹爪怎么选?——2026年3c电子电爪厂家推荐精选 - 品牌2025
  • AI学习文章
  • 大话西游2 科举答题器 双关键字版
  • 基于Java+SpringBoot+SpringBoot课堂考勤签到系统(源码+LW+调试文档+讲解等)/课堂考勤系统/考勤签到系统/课堂签到系统/课堂考勤软件/考勤签到软件/课堂签到软件