[题目]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…
$ >AtcoderGrandContest \space 005 F.  Many Easy Problems<$ 题目大意 : 有一棵大小为 \(n\) 的树,对于每一个 \(k \in[1,n]\) ,求出在所有在树中选 \(k\) 个点的方案对应的包含这 \(k\) 个点的最小联通块大小之和 \(1 \leq n \leq 2 \times 10^5\) 解题思路 : 容易发现,对于一组选取方案,包含它的最小联通块是唯一的,不妨考虑每一个点对这个联通块的贡献. 观察发现,一个点如果在一…
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC002F.html 题目传送门 - AGC002F 题意 给定 $n,k$ ,表示有 $n\times k$ 个球,其中,颜色为 $1,2,\cdots, n$ 的球各有 $k$ 个. 将这些球任意排列成一排,对于每一种颜色,将这种颜色的球的最左边的那个涂成颜色 $0$ . 问最终可以得到多少种不同的排列. $1\leq n,k\leq 2000,{\rm Mod} = 10^9 +7$ 题解 首先当 $…
题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出去的某一个子树内的方案数.枚举节点i,把i连出去的每一个子树的size都加入一个序列c,则答案为\(\binom{n}{k}\cdot n-\sum_{i=0}^{|c|-1}\binom{c_i}{k}\). 考虑\(k=1\cdots n\)的情况: \(ans_k=\binom{n}{k}\c…
题解 我们把一个点的贡献转化为一条边的贡献,因为边的数量是点的数量-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}…
排列组合 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; ; ]; long long qpow(int p,int q){ ; ,p=1ll*p*p%mod) ) s=1ll*s*p%mod; return s; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,k; cin&g…
#include<cstdio> #include<cstring> using namespace std; int n,m,jiecheng[11]; double a[12],b[12]; int main() { //freopen("hdu1521.in","r",stdin); int x; jiecheng[0]=1; for(int i=1;i<=10;++i) jiecheng[i]=jiecheng[i-1]*i;…
排列组合 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4891    Accepted Submission(s): 2122 Problem Description 有n种物品,并且知道每种物品的数量.要求从中选出m件物品的排列数.例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA&q…
个人感觉这篇文章(原文地址见文章尾)写的排列组合问题,非常的好,而且是一步一步引出排列组合问题,我也是看了这篇文章,一步一步按照这个思路来,最后会了自己的一套排列组合 也因此在算法竞赛中,两次用到了,成功解决了问题. 第一个问题: 首先,先让我们来看第一个问题, 有1,2,3,4这4个数字.可以重复的在里面选4次,问能得到多少种结果.easy 1 1 1 1 1 1 1 2 1 1 1 3 1 1 1 4 1 1 2 1 1 1 2 2 ....... 4 4 4 3 4 4 4 4 代码实现其…
Removing Blocks 题目链接:https://atcoder.jp/contests/agc028/tasks/agc028_b 数据范围:略. 题解: 这种问题的第一步很套路,就是对于每个$a_i$分开求. 那么对于每个$a_i$应该怎么求呢? 考虑删掉$j$的时候,有$a_i$贡献,有多少种方案. 这样的话,需要保证$i\sim j$中间的所有数都被删掉了. 考虑我们排列组合时候,广义来讲是先放谁都无所谓的. 不妨先把那些应该在$j$后面出现的数先放进去,这样到了放$j$的时候就…