23.8.3 杭电暑期多校6部分题解

news/2024/11/25 9:38:34/

1004 - Tree

题意、思路待补

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
const long long X[3] = {998244353, 1000000007, -1000000007 - 998244353};
struct lol {int x, y;} e[N << 1];
int t, n, a[N], ans, top[N], siz[N], num, vis[N], rt, h[N];
long long sum;
vector <long long> vct;
unordered_map <long long, int> g;
void ein(int x, int y) {e[++ ans].x = top[x];e[ans].y = y;top[x] = ans;
}
void dfs(int x, int fa) {siz[x] = 1; h[x] = 0;for (int i = top[x]; i; i = e[i].x) {int y = e[i].y;if (y == fa || vis[y]) continue;dfs(y, x);siz[x] += siz[y];h[x] = max(h[x], siz[y]);}h[x] = max(h[x], num - siz[x]);if (h[x] < h[rt]) rt = x;
}
void dfs2(int x, int fa, long long d, int p) {d += X[a[x]];vct.push_back(d);long long dis = d + X[p];if (dis == 0) ++ sum;if (g.find(-dis) != g.end()) sum += g[-dis];for (int i = top[x]; i; i = e[i].x) {int y = e[i].y;if (y == fa || vis[y]) continue;dfs2(y, x, d, p);}
}
void dfs1(int x) {vis[x] = 1; g.clear(); for (int i = top[x]; i; i = e[i].x) {int y = e[i].y;if (vis[y]) continue;dfs2(y, x, 0, a[x]);for (auto v : vct) ++ g[v];vct.clear();}for (int i = top[x]; i; i = e[i].x) {int y = e[i].y;if (vis[y]) continue;rt = 0; num = siz[y];dfs(y, x);dfs1(rt);}
}
int main() {scanf("%d", &n); num = n; h[0] = 1e9;for (int i = 1; i <= n; ++ i) {char c = getchar();while (c == ' ' || c == '\n') c = getchar();a[i] = c - 'a';}for (int i = 1, u, v; i < n; ++ i)scanf("%d%d", &u, &v), ein(u, v), ein(v, u);dfs(1, 0);dfs1(rt);printf("%lld", sum);return 0;
}

http://www.ppmy.cn/news/1005901.html

相关文章

TSINGSEE青犀视频汇聚平台EasyCVR视频广场面包屑侧边栏支持拖拽操作

TSINGSEE青犀视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、Web…

程序框架-公共MONO模块

作用&#xff1a;让没有继承MONO的类可以开启协程&#xff0c;可以update更新&#xff0c;可以统一管理update MonoController脚本继承MonoBehaviour使得脚本过场不移除&#xff0c;并通过UnityAction可以添加多个函数&#xff08;多播委托&#xff09;&#xff0c;实现Update…

router 跳转打开新窗口

let url router.resolve({name: screen, })?.hrefwindow.open(url, _black)注意&#xff1a;新窗口无法全屏 参考链接&#xff1a;https://stackoverflow.com/questions/29281986/run-a-website-in-fullscreen-mode/30970886#30970886

mysql 的分库分表、主从复制、主从一致性【11;00 MAX 11:30】

为什么需要分库分表 一般情况下我们创建的表对应一组存储文件 当数据量较大时&#xff08;一般千万条记录级别以上&#xff09;&#xff0c;MySQL的性能就会开始下降&#xff1a;此时只是单纯的添加索引的话&#xff0c;会发现 影响到了新增和删除的性能。 此时 我们将数据…

“深入解析JVM内部机制:从字节码到垃圾回收“

标题&#xff1a;深入解析JVM内部机制&#xff1a;从字节码到垃圾回收 摘要&#xff1a;本文将从字节码生成、类加载、运行时数据区域和垃圾回收等方面深入解析JVM的内部机制&#xff0c;并通过示例代码展示其工作原理和实践应用。 正文&#xff1a; 一、字节码生成 JVM是基…

企业上云实施路线图

企业上云步骤主要分为规划、设计、实施、验证、运维五个阶段。https://articles.e-works.net.cn/cloud/article144684.htm

vite+typescript项目 :找不到模块“./***.vue”或其相应的类型声明——解决方案

vue3ts报错&#xff1a; 找不到模块“./App.vue”或其相应的类型声明。ts(2307) 解决方法&#xff1a; 1、在src文件夹找到 vite-env.d.ts 加入以下代码&#xff1a; declare module *.vue {import type { DefineComponent } from vueconst vueComponent: DefineComponent<…

idea-常用插件汇总

idea-常用插件汇总 码云插件 这个插件是码云提供的ps-码云是国内的一款类似github的代码托管工具。 Lombok Lombok是一个通用Java类库&#xff0c;能自动插入编辑器并构建工具&#xff0c;简化Java开发。通过添加注解的方式&#xff0c;不需要为类编写getter或setter等方法…