【枚举边+MST+组合计数】CF1857G

news2024/12/30 1:43:20

Problem - 1857G - Codeforces 
题意:

 

思路:

首先观察一下样例: 

 

可以发现对于每一对点,贡献是 s - 这对点对应的环的最大边 + 1

那么这样就有了 n^2 的做法

然后,根据惯用套路,枚举树上的点对问题可以转化为枚举边,按边去算贡献

在Kruskal的过程中,一条边是作为最大边出现的,贡献是

qpow((s - V[i][0] + 1), ((sz[find(V[i][1])] * sz[find(V[i][2])] - 1)))) % mod

Code:

#include <bits/stdc++.h>

#define int long long

using i64 = long long;

constexpr int N = 2e5 + 10;
constexpr int mod = 998244353;

int f[N], sz[N];

int find(int x) {
    return f[x] = (x == f[x] ? x : find(f[x]));
}
void join(int u, int v) {
    int f1 = find(u), f2 = find(v);
    if (f1 != f2) {
        f[f1] = f2;
        sz[f2] += sz[f1];
    }
}
int qpow(int a, int b) {
    int res = 1ll;
    while(b) {
        if (b & 1) res = (res * a) % mod;
        a = (a * a) % mod;
        b >>= 1;
    }
    return res;
}
bool cmp(std::array<int,3> x, std::array<int,3> y) {
    return x[0] < y[0];
}
void solve() {
    int n, m, s;
    std::cin >> n >> s;

    for (int i = 1; i <= n; i ++) {
        f[i] = i;
        sz[i] = 1;
    }

    std::vector<std::array<int,3> > V;
    for (int i = 1; i <= n - 1; i ++) {
        int u, v, w;
        std::cin >> u >> v >> w;
        V.push_back({w, u, v});
    }

    std::sort(V.begin(), V.end(), cmp);

    int ans = 1;
    for (int i = 0; i < V.size(); i ++) {
        ans = (ans * qpow((s - V[i][0] + 1), ((sz[find(V[i][1])] * sz[find(V[i][2])] - 1)))) % mod;
        join(V[i][1], V[i][2]);
    }

    std::cout << ans % mod << "\n";
}

signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t = 1;
    std::cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/882187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入解析美颜SDK:算法、效果与实现

在当今数字化社会中&#xff0c;图像处理和美化技术已经成为了许多应用领域的重要组成部分&#xff0c;尤其在视频直播领域&#xff0c;美颜技术更是无处不在。直播美颜SDK作为一种集成的软件工具包&#xff0c;为开发者和应用提供了强大的美颜功能。 一、算法原理 磨皮算法…

理解RDMA SGL

1. 前言 在使用RDMA操作之前&#xff0c;我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组&#xff0c;sg_list是用来存放ibv_sge元素&#xff0c;那么什么是SGL以及什么是sge呢&#xff1f;对于一个使用RDMA进行开发的程序员来说&…

Python教程(9)——Python变量类型列表list的用法介绍

列表操作 创建列表访问列表更改列表元素增加列表元素修改列表元素删除列表元素 删除列表 在Python中&#xff0c;列表&#xff08;list&#xff09;是一种有序、可变的数据结构&#xff0c;用于存储多个元素。列表可以包含不同类型的元素&#xff0c;包括整数、浮点数、字符串等…

服务器如何防止cc攻击

对于搭载网站运行的服务器来说&#xff0c;cc攻击应该并不陌生&#xff0c;特别是cc攻击的攻击门槛非常低&#xff0c;有个代理IP工具&#xff0c;有个cc攻击软件就可以轻易对任何网站发起攻击&#xff0c;那么服务器如何防止cc攻击?请看下面的介绍。 服务器如何防止cc攻击&a…

只需要自动售货机,商业模式立马大变样!

随着互联网、大数据和人工智能的蓬勃发展&#xff0c;商业模式正以前所未有的方式融合&#xff0c;其中自动售货机作为新零售模式的一颗璀璨明珠&#xff0c;正引领着购物体验的革命。这个巧妙的结合将消费者的便利、数据的智能分析以及科技的创新融为一体&#xff0c;重新定义…

【日常积累】HTTP和HTTPS的区别

背景 在运维面试中&#xff0c;经常会遇到面试官提问http和https的区别&#xff0c;今天咱们先来简单了解一下。 超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息&#xff0c;HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果…

你的汽车充电桩控制板可能比你的智能手机还要智能?

你是否想过&#xff0c;你的汽车充电桩控制板可能比你的智能手机还要智能?今天我们就来聊聊这个话题。 汽车充电桩控制板的智能性让充电过程更加高效、安全。首先&#xff0c;它具备自检功能&#xff0c;就像你的手机一样&#xff0c;不仅能检查出设备的工作状态&#xff0c;还…

[杂症]PLSQL很卡

PLSQL症状如下&#xff1a; 1、PLSQL隔段时间没用再执行语句时会很卡2、就是很卡&#xff0c;干啥都卡 目前网上的方法汇总如下&#xff1a; 1、Tools >> Preferesnces >> Oracle >> Connection 打开自动连接 勾选检查连接、勾选所有会话&#xff0c;设置成…

正中优配:牛市旗手“又行了”

8月15日早盘&#xff0c;A股首要指数呈弱势盘整态势&#xff0c;截至记者发稿时&#xff0c;沪指小幅翻红&#xff0c;深证成指、创业板指依然飘绿。 中拉升&#xff1b;周一活泼的酒店、旅游板块则震荡调整&#xff1b;房地产板块盘中震荡&#xff0c;体现较弱。 “牛市旗手”…

软件测试简历撰写与优化,让你面试邀约率暴增99%!

如何撰写一份优秀的简历呢&#xff1f;&#xff1f;这是一个求职者都会遇到的问题&#xff0c;今天就来详细带大家写一份软件测试工程师职位的简历&#xff01;希望能给各位软件测试求职者一个带来帮助&#xff01; 个人简历是求职者给招聘单位发的一份简要介绍。包含自己的基本…

grafana 的 ws websocket 连接不上的解决方式

使用了多层的代理方式&#xff0c;一层没有此问题 错误 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志报错 msg“Request Completed” methodGET path/api/live/ws status403 解决方式 # allowed_origins is a comma-separated list of o…

Qt扫盲- Graphics View框架理论综述

Graphics View框架理论综述 一、概述二、Graphics View 体系结构1. The Scene2. The View3. 图元 Item 三、图形视图坐标系统1. 图元Item的坐标2. Scene Scene坐标3. View 视图坐标4. 坐标映射 四、关键特性1. 缩放和旋转2. 打印3. 拖放4. 鼠标指针和 提示5. 动画6. OpenGL渲染…

在Vscode中,使用Shift + Alt + F导致本来一行的代码变成多行,看起来贼难受

在VSCode中&#xff0c;我们经常安装各种插件&#xff0c;本人采用的时vuter插件&#xff0c;但是在使用这个插件的时候&#xff0c;我发现&#xff0c;使用Shift Alt F&#xff0c;对整个前端vue界面进行代码格式化的时候&#xff0c;本来是一行就可以展示的代码&#xff0c…

揭穿DevOps的5个谣言!

据不完全统计&#xff0c;软件故障每年都会给企业造成数十亿美元的损失&#xff0c;这也是为什么拥有一个可靠的软件交付流程是如此重要的原因&#xff0c;而DevOps能够帮助我们实现这一目标。 尽管如今DevOps如今已在大量企业中落地&#xff0c;但人们对DevOps其实存在很多误…

0基础转行产品经理可行吗?如何操作才靠谱?

在多年的产品经验中&#xff0c;遇到了很多朋友同事咨询转行做产品的可行性&#xff0c;在沟通的过程中&#xff0c;大家都普遍认为零基础转行产品&#xff0c;对于一个已经有工作经验的人来说&#xff0c;是不是需要付出很大的努力&#xff0c;之前走的路就全白费了&#xff0…

在VMware平台安装centos8.4详细图文步骤

CentOS-8 的首个发行版本。CentOS Linux 发行版本是一个稳定、高预测性、高管理性、高重复性的平台&#xff0c;它源于 Red Hat 企业级 Linux(RHEL)的源代码。你可以检阅此发行版本的官方发布。 官方中文的发行说明&#xff1a;https://wiki.centos.org/action/show/zh/Manuals…

针对低分辨率或小目标的卷积-SPDConv

针对低分辨率或小目标的卷积-SPDConv 摘要引言A New Building Block:SPD-Conv附录代码&#xff1a; 摘要 卷积神经网络在许多计算机视觉任务中取得了巨大成功。然而&#xff0c;在图像低分辨率或目标较小任务上&#xff0c;他们的性能迅速下降。在本文中&#xff0c;我们指出&…

Springboot 实践(3)配置DataSource及创建数据库

前文讲述了利用MyEclipse2019开发工具&#xff0c;创建maven工程、加载springboot、swagger-ui功能。本文讲述创建数据库&#xff0c;为项目配置数据源&#xff0c;实现数据的增删改查服务&#xff0c;并通过swagger-ui界面举例调试服务控制器 创建数据库 项目使用MySQL 8.0.…

dataframe resample时间重采样的坑

无论日期列不在index&#xff0c;index一定要按顺序&#xff0c;否则结果会和实际不一致。reset_index

WebDAV之π-Disk·派盘 + 厚墨

厚墨是目前网络上非常方便的一款电子阅读软件,采用独家数据采集分析技术,汇合了移动互联网各种资源网站大数据,能同步起点中文网、纵横中文网、逐浪小说网、言情小说吧、晋江文学城、百度阅读、网易云阅读、塔读文学、创世中文网、潇湘书院、飞卢小说和腾讯文学等等小说更新…