小G砍树 dfs两次, dp出每个点作为最后一个点的方案数. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int, int> #define SZ(x) ((int)x…
[BZOJ5072][Lydsy十月月赛]小A的树 题解:考虑我们从一个联通块中替换掉一个点,导致黑点数量的变化最多为1.所以我们考虑维护对于所有的x,y的最大值和最小值是多少.如果询问的y在最大值和最小值之间,则一定是存在的.处理最大和最小值用树形背包即可. #include <bits/stdc++.h> using namespace std; int n,m,cnt,T; int f[5010][5010],g[5010][5010],v[5010],sg[5010],sf[5010]…
小w的喜糖 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=4665 数据范围:略. 题解: 二项式反演裸题. $f_{i,j}$表示,前$i$种钦定$j$拿到自己种类糖果的方案数. 求完了之后可以二项式反演回来即可. 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1000000009 ; int n, m; ll…