题意:给定一颗 $n$ 个节点的树,定义 $dis(x,y)$ 为树上点 $x$ 到 $y$ 的路径经过的边数.

定义一个点集 $S$ 的 $f(S)$ 为 $f(S)=max\left \{dis(x,y)|x,y\in S\right \}$ $,|S|\geqslant2$

求:对于 $i$ ,有少个点集 $S$ 满足 $|S|\geqslant 2$ 且 $f(S)=i$

题解:

上面那个 $f(S)$ 就是这个点集的直径.

考虑枚举直径,我们知道树上的直径有奇数条边/偶数条边两种情况,这里先讲一下直径为偶数条边的情况,奇数条边同理.

假设当前直径为 $i$,那么我们可以枚举直径的中心点 $p$,也可以看作是我们要枚举的点集的中心点.

我们先让 $p$ 为这颗树的树根.

假设当前枚举的半径的半径为 $j$,那么显然 $p$ 的子树中深度为 $(j-1)$ 的点都是可以随便选的(可选可不选).

令这部分方案数为 $re$,则 $re=2^{dep[j-1]}$ 其中 $dep[i]$ 表示当前根的子树中所有深度小于等于 $i$ 的节点数量.

枚举完可以随便选的部分,再枚举一下深度恰好为 $j$ 的部分:令 $sum[j]$ 表示所有儿子中深度恰好为 $j$ 的数量.

那么我们只需保证在这么多点中选大于等于 $2$ 个点即可.

这个的方案数为 $2^{sum[j]}-1$,然后减掉只有一个的情况,就是 $\sum_{v\in son[p]} 2^{cnt[v][j]}-1$

因为直径可能是奇数,所以将每条边拆成一个点连两条边即可.

#include <bits/stdc++.h>
#define N 4010
#define ll long long
#define mod 998244353
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int edges,now,n;
int hd[N<<1],to[N<<2],nex[N<<2],cnt[N<<1][N],sum[N],bin[N],ans[N];
void add(int u,int v)
{
nex[++edges]=hd[u],hd[u]=edges,to[edges]=v;
}
void dfs(int u,int ff,int d)
{
if(u<=n) ++sum[d], ++cnt[now][d];
for(int i=hd[u];i;i=nex[i]) if(to[i]!=ff) dfs(to[i], u, d+1);
}
int main()
{
// setIO("input");
int i,j;
scanf("%d",&n);
bin[0]=1;
for(i=1;i<=n;++i) bin[i]=bin[i-1]*2%mod;
for(i=1;i<n;++i)
{
int u,v;
scanf("%d%d",&u,&v);
add(u,i+n),add(i+n,u);
add(i+n,v),add(v,i+n);
}
for(i=1;i<=2*n;++i)
{
now=0;
for(j=hd[i];j;j=nex[j]) ++now, dfs(to[j],i,1);
int re=(i<=n);
for(j=1;j<n;++j)
{
int mdl=bin[sum[j]]-1;
for(int k=1;k<=now;++k)
{
(mdl+=mod-bin[cnt[k][j]]+1)%=mod;
}
(ans[j]+=(ll)mdl*bin[re]%mod)%=mod;
re+=sum[j];
}
memset(sum,0,sizeof sum);
for(j=1;j<=now;++j) memset(cnt[j], 0, sizeof cnt[j]);
}
for(i=1;i<n;++i)
printf("%d\n",(ans[i]+mod)%mod);
return 0;
}

  

Comet OJ - Contest #2 (D 错综的光影所迷惑的思念是) 容斥计数的更多相关文章

  1. Comet OJ - Contest #2简要题解

    Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...

  2. Comet OJ - Contest #2题解

    传送门 既然没参加过就没有什么小裙子不小裙子的了-- 顺便全是概率期望真是劲啊-- 因自过去而至的残响起舞 \(k\)增长非常快,大力模拟一下就行了 int main(){ scanf("% ...

  3. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

  4. Comet OJ - Contest #4--前缀和

    原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...

  5. Comet OJ - Contest #11 题解&赛后总结

    Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...

  6. Comet OJ - Contest #8

    Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...

  7. Comet OJ - Contest #13-C2

    Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...

  8. Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」

    来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...

  9. Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)

    来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...

随机推荐

  1. 模块 json 和 pickle

    目录 序列化 json 和 pickle 模块 序列化 序列:字符串 序列化:将其它数据类型转换成字符串的过程. 反序列化:字符串转成其它数据类型. 序列化的目的 1:以某种存储形式使用自定义对象持久 ...

  2. scratch少儿编程第一季——02、scratch界面介绍

    各位小伙伴大家好: 上期我们简单的介绍了Scratch的一些基本信息,和scratch软件的下载. 今天我们一起来了解一下Scratch的编程界面的介绍. 关于版本我考虑之后还是决定基于Scratch ...

  3. 怎样理解this

    JavaScript里的this, Python里的self, 其实都是一个东西, 它的存在跟构造函数 / 类这种是分不开的, 当然, 也可以在其他场合下使用, 他的意义很多, 但最共通的一个特点是: ...

  4. .NET Core使用swagger遇到的坑

    今天突然点开写好的接口,突然发现展开时同时展开了两个接口.如图 我点这两个接口任意一个,这两个都会同时展开或折叠. 原因是他们actinName相同,虽然在vs里面只要http方法不同,action是 ...

  5. Asp.Net Core 轻松学系列-3项目目录和文件作用介绍

    目录 前言 结语 前言     上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core M ...

  6. Win10安装PyQt5与Qt Designer

    1.直接在cmd中通过pip安装PyQt5 1 pip install pyqt5 会自动下载PyQt5以及sip并安装,因为PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5- ...

  7. CSS图片Img等比例缩放且居中显示

    常用来做图片放大显示的遮罩层imgScale HTML <div id="imgScale" > <img src=""> </d ...

  8. S2-052

    前言 S2-052的RCE漏洞和以前的有些不同,不再是ognl表达式注入了,而是xml反序列化漏洞导致的RCE(另外还有S2-055漏洞是fastjson的反序列化漏洞).我复现的时候遇到一个坑,导致 ...

  9. SAP官方发布的ABAP编程规范

    最近有朋友在公众号后台给我留言,"Jerry啊,你最近写的都是一些SAP研究院里面用到的新技术,能不能写点SAP传统的开发技术比如ABAP相关的东西"? 其实Jerry在刚开始写这 ...

  10. nginx的so_keepalive和timeout相关小计

    KeepAlive 这里的keepalive是TCP的探活机制: [root@ ~]# sysctl -a |grep tcp_keepalive net.ipv4.tcp_keepalive_tim ...