题目大意 给你一棵树,有\(n\)个点.还给你了一个整数\(k\). 设\(S\)为树上某些点的集合,定义\(f(S)\)为最小的包含\(S\)的联通子图的大小. \(n\)个点选\(k\)个点一共有\(\binom{n}{k}\)中方案,请你求出所有方案的\(f(S)\)的和\(\mod 924844033\). 出题人觉得这样就太简单了,他决定让你求出所有\(k=1\ldots n\)的答案. \(n\leq 200000\) 题解 似乎对于每个\(k\)没办法快速求出答案. 我们考虑一个点…
先只考虑求某个f(k).考虑转换为计算每条边的贡献,也即该边被所选连通块包含的方案数.再考虑转换为计算每条边不被包含的方案数.这仅当所选点都在该边的同一侧.于是可得f(k)=C(n,k)+ΣC(n,k)-C(sizei,k)-C(n-sizei,k).于是就可以O(n)求出某个f(k)了. 现在要求所有f(k),容易发现是一个卷积的形式,并且所给模数是一个隐蔽的NTT模数(最小原根是5),直接NTT即可. #include<iostream> #include<cstdio> #i…
题解 我们把一个点的贡献转化为一条边的贡献,因为边的数量是点的数量-1,最后再加上选点方案数\(\binom{n}{k}\)即可 一条边的贡献是\(\binom{n}{k} - \binom{a}{k} - \binom{n - a}{k}\)就是在n个点里选k个点,去掉不合法的情况也就是k个点都在去掉这条边的两个子树里 然后我们要统计的就是\(\binom{a}{k} + \binom{n - a}{k}\) 这个可以转化成\(ans_{k} = \sum_{i = 1}^{n} b_{i}…
link 题意简述 给定一颗无根树,对于所有大小为 $i$ 的点集,求出能够包含它的所有联通块之和,定义为 $f_i$ ,答案对 $924844033$ 取模. $n\leq 2\times 10^5$ . $solution:$ 考虑每个点在点集中起到的贡献,可以得到 $$f_i=n\times\dbinom{n}{k}-\sum_{i=1}^n \dbinom{n-size_i}{k}+\sum_{x\in i} \dbinom{size_x}{k}\\=n\times \dbinom{n}…
题面 两道题比较像,放在一起写了,后者可以看成前者的加强版 (sto ztb orz) 先看AT那道题 考虑计算每个点的贡献,用容斥计算:每个点没有贡献当且仅当选的所有点都在以他为根时的一个子节点的子树里.所以对于每个点i,其贡献为$C_n^k-\sum_{v∈son_i}C_{size[v]}^k$,这样我们就得到了一个$O(n^2)$的算法 考虑优化,来列出来总的式子 $ans=n*C_n^k-\sum\limits_{i=1}^n\sum_{v∈son_i}C_{size[v]}^k$ 前…
913D - Too Easy Problems 思路:二分check k 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a)) ; struct pro{ int t,a,id; bool operator < (pro tmp){ return t<tmp.t; } }a[N…
[题目]F - Many Easy Problems [题意]给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模924844033.n<=2*10^5. [算法]排列组合+NTT [题解]考虑每个点只会在k个点都在其一个子树时无贡献,即: $$ANS_k=\sum_{x=1}^{n}\binom{n}{k}-\sum_{y}\binom{sz[y]}{k}+\binom{n-sz[y]}{k}$$ 令$cnt_i$表示满足s…
[题目]D. Too Easy Problems [题意]给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数.n<=2*10^5,T<=10^9. [算法]贪心(排序+堆) [题解]因为T太大,不能考虑背包. 容易发现k越小越能使更多问题有效,所以一定有最优方案的所有问题均有效. 当k唯一确定时,其实就是在所有ai>=k的问题中选取时间最少的几个解决. 当k减小时,选择的范围扩大,就可以选择一些时…
$ >AtcoderGrandContest \space 005 F.  Many Easy Problems<$ 题目大意 : 有一棵大小为 \(n\) 的树,对于每一个 \(k \in[1,n]\) ,求出在所有在树中选 \(k\) 个点的方案对应的包含这 \(k\) 个点的最小联通块大小之和 \(1 \leq n \leq 2 \times 10^5\) 解题思路 : 容易发现,对于一组选取方案,包含它的最小联通块是唯一的,不妨考虑每一个点对这个联通块的贡献. 观察发现,一个点如果在一…
题目描述 樵夫的每一把斧头都有一个价值,不同斧头的价值不同.总损失就是丢掉的斧头价值和. 他想对于每个可能的总损失,计算有几种可能的方案. 注意:如果水神拿走了两把斧头a和b,(a,b)和(b,a)视为一种方案.拿走三把斧头时,(a,b,c),(b,c,a),(c,a,b),(c,b,a),(b,a,c),(a,c,b)视为一种方案. 输入 第一行是整数N,表示有N把斧头. 接下来n行升序输入N个数字Ai,表示每把斧头的价值. 输出 若干行,按升序对于所有可能的总损失输出一行x y,x为损失值,…