Comet OJ - Contest #2 D 枚举重心
思路:
函数f相当于是求一个点集f的直径,有一个性质是如果这个点集有多个直径一定相交于某一个点,或者一条边的中心,所以我们暴力枚举重心,计算以某个点为重心的点集对答案的贡献。
具体实现的时候,我们从一个重心开始深搜,计算其它点到这个点的距离。我们现在假设计算以当前点为重心,有多少个点集的直径是i。首先,之前所有半径小于i / 2的点随便选了,假设有sum个,那前面的点有2 ^ sum种情况。假设半径是i / 2的点有cnt[i]个,那只有这些点才可能构造出i的直径,并且,这两个点不能在一个连通块中(把重心去掉后可能会形成若干个连通块), 所以我们枚举每个连通块中半径是i / 2的点数,此时假设其它连通块中没有点半径是i / 2,减去这些情况就可以了。
代码:
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 4010;
const LL mod = 998244353;
int head[maxn], Next[maxn * 2], ver[maxn * 2], tot;
LL cnt[maxn], re[maxn][maxn], p[maxn], ans[maxn];
int n;
void add(int x, int y) {
ver[++tot] = y;
Next[tot] = head[x];
head[x] = tot;
}
void dfs(int x, int fa, int deep, int dye) {
if(x <= n) {
cnt[deep]++;
re[dye][deep]++;
}
for (int i = head[x]; i; i = Next[i]) {
int y = ver[i];
if(y == fa) continue;
dfs(y, x, deep + 1, dye);
}
}
int main() {
int x, y;
scanf("%d", &n);
for (int i = 1; i < n; i++) {
scanf("%d%d", &x, &y);
add(x, i + n), add(i + n, x), add(y, i + n), add(i + n, y);
}
p[0] = 1;
for (int i = 1; i <= 2 * n - 1; i++) p[i] = (p[i - 1] * 2) % mod;
for (int i = 1; i <= 2 * n - 1; i++) {
int dye = 0;
LL sum = 0;
memset(cnt, 0, sizeof(cnt));
if(i <= n) {
cnt[0]++;
sum = 1;
}
for (int j = head[i]; j; j = Next[j]) {
int y = ver[j];
dye++;
memset(re[dye], 0, sizeof(re[dye]));
dfs(y, i, 1, dye);
}
for (int j = 1; j < n; j++) {
LL now = p[cnt[j]] - 1;
for (int k = 1; k <= dye; k++)
now = (now - (p[re[k][j]] - 1) + mod) % mod;
ans[j] = (ans[j] + (now * p[sum]) % mod) % mod;
sum += cnt[j];
}
}
for (int i = 1; i < n; i++)
printf("%lld\n", ans[i]);
}
Comet OJ - Contest #2 D 枚举重心的更多相关文章
- Comet OJ - Contest #2 简要题解
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...
- Comet OJ - Contest #2简要题解
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...
- Comet OJ - Contest #11 题解&赛后总结
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...
- Comet OJ - Contest #5
Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下, ...
- Comet OJ - Contest #4--前缀和
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...
- Comet OJ - Contest #8
Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...
- Comet OJ - Contest #13-C2
Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...
- Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」
来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...
- Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)
来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...
随机推荐
- smarty基本用法,循环,判断
require './smarty/Smarty.class.php'; $sm = new Smarty; $sm->setTemplateDir("./dir");//设 ...
- cacti监控linux主机时iptables阻碍了udp161端口造成无法监控解
由于在添加linux主机时,有防火墙启用,造成无法监控linux主机,现有两种方法解决无法监控linux主机问题:可以通过在监控主机执行该命令: snmpwalk -c public -v 2c 19 ...
- 关于tab的切换之共用html页面,而引发的页面跳转错乱问题
在一个项目中的同一个模块中,有多个tab(并且多个tab对应的页面结构完全一样),tab的每次切换,不同tab调用不同的接口,利用一个switch进行判断,根据当前的类型去调用不同的接口,返回不同数据 ...
- 字符串全排列 java实现
经常会遇到字符串全排列的问题.例如:输入为{‘a’,’b’,’c’},则其全排列组合为abc,acb,bac,bca,cba,cab.对于输入长度为n的字符串数组,全排列组合为n!种. package ...
- win7环境下,golang thrift demo代码编译不通过
用官方的教程代码:http://thrift.apache.org/tutorial/go 用网友提供的代码:Golang RPC 之 Thrift 都出现如下情况 状况1: 编辑器中就会提醒 Can ...
- Service的用法
基本用法: 1.创建一个类继承Service类,并重写onBind() 2.重写其他方法:onCreate().onStartCommand().onDestory() 3.在AndroidManif ...
- appium+python自动化28-name定位
前言 appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了 name定位报错 1.最新版appium V1.7用name定位,报错: selenium.co ...
- Cassandra Wiki Login JmxSecurity
JmxSecurity 监控和管理Cassandra
- 【BZOJ】2006: [NOI2010]超级钢琴(前缀和+RMQ+堆)
题目 传送门:QWQ 分析 又不会做....... 显然很好想到前缀和处理一下. 然后考虑最大化结果,直接上st表. 问题来了,然后呢? 怎么做$ length \in [l,r] $ 呢? 正解是 ...
- java中构造方法和方法super/this超类与子类中初始化顺序
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...