首页 > 其他分享 >「NOIP 2023 模拟赛 20230711 B」过往未来

「NOIP 2023 模拟赛 20230711 B」过往未来

时间:2023-07-11 19:01:10浏览次数:32  
标签:sz NOIP 20230711 int ll ans 2023 now mod

summarization

给定一个 \(n\) 个节点的树,定义 \(x_1,x_2,\cdots,x_k\) 生成的子树为树中边数最少的包含 \(x_1,x_2,\cdots,x_k\) 的连通块。

对所有可能的 \(x_1,x_2,\cdots,x_k\quad(1\le x_1<x_2<\cdots<x_k\le n)\),求 \(x_1,x_2,\cdots,x_k\) 生成的子树的大小(边数和)总和。

solution

考虑分别计算每一条边的贡献。

若这条边要产生贡献,当且仅当它的两边都有点被选中。若这条边深度较大的点为根的子树的大小为 \(x\),整棵树的大小为 \(n\):

那么总的选点方案数为 \(C_n^k\),全选在子树中的方案为 \(C_x^k\),全选在字数外的方案为 \(C_{n-x}^k\),则跨越这条边的方案数为 \(C_n^k-C_x^k-C_{n-x}^k\)。

code

CI N = 1e6, N2 = 2e6; const ll mod = 998244353; int n, k; ll inv[N + 5], invf[N + 5], sz[N + 5], ans = 0;
namespace graph {
	int nxt[N2 + 5], to[N2 + 5], hd[N + 5], cnt = 0;
	void A (int u, int v) {++ cnt; to[cnt] = v; nxt[cnt] = hd[u]; hd[u] = cnt;}
} using namespace graph;
ll Pow (ll x, ll p) {ll r = 1; for (; p; p >>= 1, x = x * x % mod) if (p & 1) r = r * x % mod; return r;}
void init () {
	RI i, j; inv[0] = inv[1] = 1; for (i = 2; i <= n; ++ i) inv[i] = inv[i - 1] * i % mod; invf[n] = Pow (inv[n], mod - 2);
	for (i = n - 1; i >= 0; -- i) invf[i] = invf[i + 1] * (i + 1) % mod;
}
ll C (int x, int y) {return inv[x] * invf[y] % mod * invf[x - y] % mod;} 
void dfs (int now, int fa) {
	RI i, j; sz[now] = 1; for (i = hd[now]; i; i = nxt[i]) {
		if (to[i] == fa) continue; dfs (to[i], now); sz[now] += sz[to[i]];
	} if (now != 1) ans = (ans - (k > sz[now] ? 0 : C (sz[now], k)) - (k > n - sz[now] ? 0 : C (n - sz[now], k)) + mod + mod) % mod;
}
int main () {
	RI i, j; for (Read (n, k), i = 1; i < n; ++ i) {int x, y; Read (x, y); A (x, y); A (y, x);} init (); ans = C (n, k) * (ll)(n - 1) % mod;
	dfs (1, 0); printf ("%lld\n", ans);
	return 0; 
}

标签:sz,NOIP,20230711,int,ll,ans,2023,now,mod
From: https://www.cnblogs.com/ClapEcho233/p/17545683.html

相关文章

  • C++自助点餐系统[2023-07-06]
    C++自助点餐系统[2023-07-06]面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;2......
  • C++停车场管理系统[2023-07-06]
    C++停车场管理系统[2023-07-06]停车场管理系统简介一、 问题描述设停车场是一个可停放若干辆辆汽车的狭多层平面区域,且只有一个大门可供汽车进出。若车场内已停满汽车,则后来的汽车只能在门外的狭长便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入。每辆停放在车......
  • 《C++程序设计》[2023-07-06]
    《C++程序设计》[2023-07-06]智能与工程学院《C++程序设计》小组学习任务书第2次专业年级:2022级计算机指导教师:李佳佳2022-2023学年第2学期一、任务根据课程所学,利用C++泛型编程思想、STL、模板、I\O流和异常处理等,以小组为单位完成基于STL泛化......
  • C/C++学生成绩管理系统[2023-07-06]
    C/C++学生成绩管理系统[2023-07-06]学生成绩管理系统开发一个可以管理学生成绩以及学生基本信息的一个信息系统,至少实现如下功能:信息管理,支持信息的增、删、改、查操作,具体信息类型如下:(1) 管理学生信息 ,包括学号,姓名,年龄,班级等等信息。(2) 班级信息,包括班级编号、班级人数,......
  • 2023-07-11 《数值优化方法》-庞丽萍,肖现涛-无约束最优化(六)
    2023-07-11《数值优化方法》-庞丽萍,肖现涛-无约束最优化(六)数值优化方法Matlab共轭梯度法共轭方向法回顾上节的最速下降法的特征:最速下降法迭代路径呈锯齿状,即.这一节给出共轭的概念,其是正交性的推广,然后给出共轭方向(梯度)法.**定义1.7**设是对称正定矩阵,是维非零向量.如果......
  • 行业追踪,2023-07-11,新增加 rps50 排名,汽车零部件回落 10 日均线,直接反弹
    自动复盘2023-07-11成交额超过100亿排名靠前,macd柱由绿转红成交量要大于均线有必要给每个行业加一个上级的归类,这样更能体现主流方向rps有时候比较滞后,但不少是欲杨先抑,应该持续跟踪,等macd反转时参与一线红:第一次买点出现后往往是顶峰,等回调,macd反转,rps50还一直红......
  • 202307 成都集训游记
    题单内容总结:20230708数据结构-金天Treasure-HDU7144Fightandupgrade-HDU7181长存不灭的过去、逐渐消逝的未来-LGP5067DataStructureQuiz-Baekjoon18756小球进洞-LOJ578DuffisMad–CF587FBreadboardCapacity-CF1368H2BearandBowling-CF......
  • (2023.7.11)usb: ring buffer full
    现象:在对usb接口的5G模组灌包时出现异常打印,xhci-hcdxhci-hcd.0.auto:ERRORunkown eventtype37/USBGadgetDriver定义了很多traceevent,使用者可以在用户空间通过ftrace接口,追踪USBGadgetDriver的行为;/用户空间接口路径为/sys/kernel/debug/tracing/events/dwc3:包含了......
  • SMU Summer 2023 Contest Round 2
    SMUSummer2023ContestRound2A.TreasureHunt当\(x1-x2\)的差值与\(y1-y2\)的差值都能被\(x,y\)整除时,且商之和为2的倍数就一定可以到达#include<bits/stdc++.h>#defineendl'\n'#defineintlonglong#defineinf0x3f3f3f3fusingnamespacestd;constintN......
  • 2023.7.11
    学习java类中的方法方法的声明:权限修饰符 返回值类型 方法名(形参列表){方法体}方法的说明:关于权限修饰符:Java规定的4种权限修饰符:private、public、缺省、protected如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的......