CF1483D-Useful Edges

news/2025/11/23 22:36:53/文章来源:https://www.cnblogs.com/NDAKJin/p/19261743

CF1483D-Useful Edges

题目大意

有一个 \(n\) 个结点的无向加权图,以及 \(q\) 个三元组,\((u,v,l)\) ,其中 \(u\)\(v\) 是顶点,\(l\) 是正整数。

如果存在至少一个三元组和一个具有以下特性的路径(不一定简单),则边 \(e\) 被称为 有用

· 这条路径的端点是 \(u\)\(v\)

· \(e\) 是这条路径的一条边。

· 这条路径上所有边的权重之和不超过 \(l\)

求这张图中有用边的数量。

题解

设城市 \(u\) 到 城市 \(v\) 的路径长度为 \(e[u][v]\) ,最短距离为 \(d[u][v]\) ,时间预算为 \(l[u][v]\)

根据题意,如果 \(i \to j\) 为 城市\(u\) 和城市 \(v\) 间的重要路径,则满足 \(d[u][i]+e[i][j]+d[j][v]\le l[u][v]\)

直接枚举 \(u,v,i,j\)\(O(n^4)\) 的,显然不可以接受,于是考虑优化。一般来说,对于满足这样的不等关系的式子,我们可以通过减少未知量来降低复杂度。

在此,我们不妨移项,将上式转变为 \(e[i][j]+d[j][v]\le l[u][v]-d[u][i]\) 。这样可以只进行三方的枚举,就能分别求出不等号两边的量了。

我们可以先枚举 \(u,v,i\) 预处理出不等号的右边,注意是 \(\le\) ,所以要使不等号右边的值最大。然后再枚举 \(i,j,v\) ,判断是否符合条件即可。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ls(p) (p << 1)
#define rs(p) (ls(p) ^ 1)
typedef pair<int, int> pii;
const int INF = 1e16;
const int N = 605;bool vis[N][N];
int d[N][N], w[N][N], l[N][N];
pii e[N * N];
inline int read();
inline void solve()
{int n = read(), m = read();memset(d, 0x3f, sizeof(d));memset(w, 0x3f, sizeof(w));for (int i = 1; i <= n; ++i)d[i][i] = w[i][i] = 0;for (int i = 1; i <= m; ++i){auto &[u, v] = e[i];u = read(), v = read();w[u][v] = w[v][u] = d[u][v] = d[v][u] = read();}for (int k = 1; k <= n; ++k)for (int i = 1; i <= n; ++i)for (int j = 1; j <= n; ++j)d[i][j] = min(d[i][j], d[i][k] + d[k][j]);int q = read(), ans = 0;while (q--){int u = read(), v = read();l[u][v] = l[v][u] = read();}for (int u = 1; u <= n; ++u){for (int i = 1; i <= n; ++i){int mx = -1e18;for (int v = 1; v <= n; ++v){mx = max(mx, l[u][v] - d[i][v]);}for (int j = 1; j <= n; ++j){if (d[u][j] + w[j][i] <= mx)vis[i][j] = 1;}}}for (int i = 1; i <= m; ++i){auto [u, v] = e[i];if (vis[u][v] || vis[v][u])ans++;}printf("%lld\n", ans);
}signed main()
{int T = 1;while (T--)solve();return 0;
}inline int read()
{int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9'){if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}return x * f;
}

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

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

相关文章

Paddle-CLS图像分类_环境安装

Paddle-CLS图像分类_环境安装 paddle-cls 图像分类的组件,依赖于`paddle`环境,因此需要先安装`paddle`的环境,而`paddle-cls`对paddle的版本依赖度较高,容易出错,因此建议第一次安装遵循本安装文档,后续再进行其…

2025年11月短视频运营公司最新TOP5推荐:业绩增长与效率筛选标准

随着短视频成为企业数字化营销的核心阵地,市场对专业运营服务商的需求持续攀升。本榜单基于技术创新力、行业适配性、服务效能三大核心维度,结合企业实战案例与客户续约率等关键指标,深度解析2025年云南及西南地区五…

实用指南:【10】MFC入门到精通——MFC 创建向导对话框、属性页类、属性表类、代码

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025-09-10-Wed-T-Kubernetes

1. 介绍说明 1.1 基础设施的变革单机场景单机(操作系统+app)--> 虚拟化(VM+OS+APP) --> 容器化(Container + APP)集群场景 IAAS集群场景 PAASKubernetes优势服务发现和负载均衡 存储编排(添加任何本地或云服…

一文入门 Dify平台的插件开发

一文入门 Dify平台的插件开发 欢迎开始 Dify 插件开发 - https://docs.dify.ai/plugin-dev-zh/0111-getting-started-dify-plugin Dify Plugin 开发速查表 - https://docs.dify.ai/plugin-dev-zh/0131-cheatsheet#环境…

20232326 2025-2026-1 《网络与系统攻防技术》实验六实验报告

1. 实验内容 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。…

2025年11月小程序开发公司TOP5评测:功能落地与适配筛选标准,西南地区企业选择指南

随着数字化转型加速,小程序已成为企业连接用户、提升运营效率的核心载体。本榜单基于技术实现能力、行业适配深度、服务交付效能三大维度,结合企业服务平台公开数据及客户案例反馈,权威解析2025年西南地区五大小程序…

2025年11月云南数字人供应商最新TOP5推荐:精细建模优质选择

在数字经济加速渗透的当下,数字人技术正从概念走向规模化应用,成为企业降本增效、创新服务模式的核心工具。据艾瑞咨询《2025年中国数字人行业研究报告》显示,2024年中国数字人市场规模突破600亿元,企业级服务需求…

第二讲下梯度下降算法

梯度下降算法 梯度下降有时会使loss不降反而上升原因是: 核心结论是:loss 上升主要源于学习率过高、数据 / 特征问题或模型设置不当,导致优化偏离最优方向。 关键原因学习率过大:步长超过最优解范围,每次更新都跳…

Java云计算技术怎样应对故障

Java云计算技术通过一系列的策略和工具来应对故障,确保系统的稳定性和可用性。以下是一些关键的策略和工具: 故障排查策略CPU问题排查:使用jstack工具分析堆栈情况,定位CPU异常的原因,如死循环或频繁的垃圾回收(…

2025-08-02-Sat-T-RabbitMQ

基础篇1. 初识MQ 1.1 同步调用 同步调用是一种线性执行模式。当你调用一个函数后,程序会暂停在当前位置,直到这个函数执行完毕并返回结果后,才会继续执行下一行代码。这就像你在餐厅点餐后,站在柜台前一直等到厨师…

Nand2Tetris 笔记

布尔函数ALU内存机器语言计算机体系结构

审美积累暗色UI设计超越美学的用户体验

审美积累暗色UI设计超越美学的用户体验研究了上百个暗色设计,才发现顶尖的“黑”从不单调。它可以是深邃的科技感,也可以是温暖的陪伴感。分享5个超赞的暗黑系UI设计范本,一起来积累高级审美! 1. 克制用色,信息层…

具有超高峰值抑制比和低功耗的全光可调谐微波滤波器

该研究提出了一种基于4个级联的光机械微环谐振器(MRR)实现高抑制比、大中心频率和带宽调谐范围的微波光子滤波器(MPF)。当每两个MRR的谐振波长调谐到对齐时,硅器件的透射谱为具有高消光比的陷波双峰分布。光载波被固定…

11.23

1. page:最核心指令,定义页面编码、语言、导入包等示例:解决中文乱码+指定Java语言+导入工具类 jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="…

实用指南:F-INR: Functional Tensor Decomposition for Implicit Neural Representations

实用指南:F-INR: Functional Tensor Decomposition for Implicit Neural Representationspre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…

实验3 类和对象_基础编程 - yuyue

TASK1 button.hpp #pragma once#include <iostream> #include <string>class Button { public:Button(const std::string &label_);const std::string& get_label() const;void click();private:s…

11/23/2025 一周总结

11/18/2025 模拟赛 T1 做太久了,方向是对的,但是一直没想清楚。做题的时候一定要想清楚,不然可能浪费很多时间。 T2 方向是对的,但是没想到怎么优化。优化需要观察性质,说明这种观察性质的能力还不够,以后还要继…

Java云计算技术如何确保稳定

Java云计算技术确保稳定的关键在于通过一系列安全措施、容错机制、高可用性设计以及性能优化来实现。以下是具体的介绍: 安全措施安全通信协议:使用HTTPS和TLS/SSL等安全协议保护数据传输。 身份验证和授权:利用JWT…

java中sql注入的防范措施是什么

在Java中,防范SQL注入的措施主要包括以下几点:使用预编译语句(PreparedStatement):预编译语句能够将SQL查询与数据分开,从而有效防止SQL注入攻击。在预编译语句中,参数值会被自动转义,避免了恶意代码的注入。 …