AtCoder AT_abc404_g [ABC404G] Specified Range Sums

前言

赛时想到了差分约束,随手写了个 SPFA 结果挂的很惨……还是太菜了,赛后 Bellman-Ford 又调了半天。

题目大意

给定整数 N , M N,M N,M 和长度为 M M M 的三个整数序列 L = ( L 1 , L 2 , … , L M ) , R = ( R 1 , R 2 , … , R M ) , S = ( S 1 , S 2 , … , S M ) L=(L_1,L_2,\dots,L_M),R=(R_1,R_2,\dots,R_M),S=(S_1,S_2,\dots,S_M) L=(L1,L2,,LM),R=(R1,R2,,RM),S=(S1,S2,,SM)。请判断是否存在一个长度为 N N N正整数序列 A A A 满足 ∀ 1 ≤ i ≤ M , ∑ j = L i R i A j = S i \forall 1\le i\le M,\sum_{j=L_i}^{R_i}A_j=S_i ∀1iM,j=LiRiAj=Si。如果存在输出序列所有元素之和的最小值,否则输出 -1

思路

我们不妨令 s i s_i si 表示 ∑ j = 1 i A i \sum_{j=1}^i A_i j=1iAi,所以 ∀ 1 ≤ i ≤ M , s R i − s L i − 1 = S i \forall 1\le i\le M,s_{R_i}-s_{L_i-1}=S_i ∀1iM,sRisLi1=Si。很自然地想到差分约束(例题:洛谷 P1993 小 K 的农场),即利用最长路中如果 x x x y y y 连一条边权为 w w w 的边,那么满足 y ≥ x + w y\ge x+w yx+w 的性质解不等式。

关于差分约束的详细内容本文不再过多讲解,请自行搜索学习。

本题显然要跑最长路。我们来想一想,都需要连哪些边:

  • L i − 1 → R i L_i-1\to R_i Li1Ri,边权为 S i S_i Si
  • R i → L i − 1 R_i\to L_i-1 RiLi1,边权为 − S i -S_i Si
  • i − 1 → i i-1\to i i1i,边权为 1 1 1

所以,我们建了这样一张图,以 0 0 0 为源点跑 Bellman-Ford 最长路即可。(注:作者赛时使用 SPFA 挂的很惨,如果您知道为什么这道题只能使用 Bellman-Ford 或者 SPFA 需要注意什么,可以在评论区中回复!)

那么答案就是 s n s_n sn,即 0 0 0 n n n 的最长路。

现在分析无解情况:

  • 该图中存在负环情况。
  • S i < R i − L i + 1 S_i<R_i-L_i+1 Si<RiLi+1 的时候也不满足条件。
  • s n s_n sn 为负无穷。

代码

提交记录:这里。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;int n, m;
long long dis[5010];
int vis[5010];
int sum[5010];struct edge
{int x, y, w;
} ;vector<edge> e;void add(int x, int y, int w)
{e.push_back((edge){x, y, w});
}bool bellman_ford(int s)
{memset(dis, -0x3f, sizeof(dis));dis[s] = 0;for (int i = 0; i <= n; i++){bool flag = false;for (int j = 0; j < e.size(); j++){int x = e[j].x;int y = e[j].y;int w = e[j].w;if (dis[x] >= -1e17 && dis[y] < dis[x] + w){dis[y] = dis[x] + w;flag = true;}}if (!flag) return false;}return true;
}int main()
{cin >> n >> m;for (int i = 1; i <= m; i++){int u, v, w;cin >> u >> v >> w;if (w < v - u + 1){cout << "-1" << endl;return 0;}int t = w - (v - u + 1);add(v, u - 1, -w);add(u - 1, v, w);
//		cout << u - 1 << " " << v << endl;}for (int i = 1; i <= n; i++)add(i - 1, i, 1);if (bellman_ford(0) || dis[n] <= -1e17)cout << "-1" << endl;else{
//		for (int i = 0; i <= n; i++)
//			cout << dis[i] << " ";
//		cout << endl; long long minn = 0;for (int i = 1; i <= n; i++)minn = min(minn, dis[i]);cout << dis[n] << endl;}return 0;
}

总结

这次的 G 很水,难度顶多 普及 + / 提高 \color{green}普及+/提高 普及+/提高,思维难度和代码实现难度都

求助

作者赛时使用 SPFA 挂的很惨,如果您知道为什么这道题只能使用 Bellman-Ford 或者 SPFA 需要注意什么,可以在评论区中回复!

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

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

相关文章

如何基于HAL库进行STM32开发

一、初识HAL库 STM32 开发中常说的 HAL 库开发&#xff0c;指的是利用 HAL 库固件包里封装好的 C 语言编写的驱动文件&#xff0c;来实现对 STM32 内部和外围设备的控制。但只有 HAL 库还不能直接驱动一个 STM32 的芯片&#xff0c;其它的组件已经由 ARM 与众多芯片硬件、软件厂…

Qt:(创建项目)

目录 1. 使⽤QtCreator新建项⽬ 1.1 新建项⽬ 1.2 选择项⽬模板 1.3 选择项⽬路径 1.4 选择构建系统 1.5 填写类信息设置界⾯ ​编辑 1.6 选择语⾔和翻译⽂件 1.6 选择Qt套件 1.7 选择版本控制系统 1.8 最终效果 1. 使⽤QtCreator新建项⽬ 1.1 新建项⽬ 打开Qt…

WPF之Slider控件详解

文章目录 1. 概述2. 基本属性2.1 值范围属性2.2 滑动步长属性2.3 刻度显示属性2.4 方向属性2.5 选择范围属性 3. 事件处理3.1 值变化事件3.2 滑块拖动事件 4. 样式和模板自定义4.1 基本样式设置4.2 控件模板自定义 5. 数据绑定5.1 绑定到ViewModel5.2 同步多个控件 6. 实际应用…

mysql索引及数据库引擎

顺序io&#xff08;不需要每次都磁盘寻址&#xff0c;效率高&#xff09;&#xff0c;随机io&#xff08;需要每次都磁盘寻址&#xff0c;效率低&#xff09; 如何正确的创建合适的索引&#xff1f; 索引是一种分散存储的数据结构 磁盘io特性&#xff1a;每次交互是以页为单位&…

网络安全:sql注入练习靶场——sqli_labs安装保姆级教程

网络安全&#xff1a;sql注入练习靶场——sqli_labs安装保姆级教程 前言 sqli-labs靶场是一个开源的sql注入练习的综合靶场&#xff0c;包含大部分sql注入漏洞以及注入方式 网络安全学习者可以通过在sqli-labs靶场练习提升对sql注入的理解&#xff0c;以及学习各种绕过姿势。…

平台介绍-开放API接口-鉴权

平台的理念是一个组织内部只建一套系统。但是现实情况是&#xff0c;组织内部已经建立了很多系统&#xff0c;是不能一次性替代的&#xff0c;只能先搭起平台&#xff0c;然后逐步开始替换。这样就不可避免的存在其他系统和平台进行交互的问题。 平台为此设计了开放API接口。其…

多端定制系统开发:打造高效全平台覆盖的APP解决方案

在移动互联网时代&#xff0c;用户需求日益多样化&#xff0c;企业若想触达更广泛的受众&#xff0c;仅靠单一平台的应用已远远不够。无论是iOS、Android、Web端&#xff0c;还是智能手表、车载设备等新兴终端&#xff0c;多端适配已成为企业数字化转型的刚需。多端定制系统开发…

Linux电源管理(5)_Hibernate和Sleep功能介绍

原文&#xff1a;Linux电源管理(5)_Hibernate和Sleep功能介绍 1. 前言 Hibernate和Sleep两个功能是Linux PM的核心功能&#xff0c;它们的目的是类似的&#xff1a;暂停使用——>保存上下文——>关闭系统以节电>恢复系统——>恢复上下文——>继续使用。 本文…

Spring 命名空间注入:p、c 与 .util 的深度解析

在 Spring 框架的开发过程中&#xff0c;XML 配置是一种常见且强大的方式来管理 Bean。为了让配置更加简洁、易读&#xff0c;Spring 提供了多种命名空间注入的方法&#xff0c;其中 p 命名空间注入、c 命名空间注入和 .util 命名空间尤为重要。本文将详细介绍这三种命名空间的…

RUST变量学习笔记

1&#xff0c;作用域概念 捕获环境 2&#xff0c;所有权概念 Rust则是通过所有权和借用来保证内存安全。很多人不理解为啥说Rust是内存安全的&#xff0c;其实就是在默认情况下&#xff0c;你是写不出内存不安全的代码的。 Rust的所有权并不难理解&#xff0c;它有且只有如下…

探索 Spring AI 的 ChatClient API:构建智能对话应用的利器

探索 Spring AI 的 ChatClient API&#xff1a;构建智能对话应用的利器 前言 在当今人工智能蓬勃发展的时代&#xff0c;智能对话系统成为了众多应用的核心组成部分。无论是客服机器人、智能助手还是聊天应用&#xff0c;都离不开高效、灵活的对话处理能力。Spring AI 作为 S…

开源ERP系统对比:Dolibarr、ERPNext与Odoo

对于寻求开源ERP解决方案的企业而言&#xff0c;Dolibarr、ERPNext和Odoo是三个备受关注的选择。它们各自拥有独特的优势和特点&#xff0c;适用于不同规模和需求的组织。以下是对这三个系统的详细介绍和对比&#xff0c;以帮助您更好地理解它们的差异&#xff0c;并结合中文支…

【2025年】MySQL面试题总结

文章目录 1. MySQL 支持哪些存储引擎&#xff1f;默认使⽤哪个&#xff1f;2. MyISAM 和 InnoDB 有什么区别&#xff1f;3. 事务的四大特性?4. 并发事务带来了哪些问题?5. 不可重复读和幻读有什么区别&#xff1f;6. MySQL 事务隔离级别&#xff1f;默认是什么级别&#xff1…

Linux常用命令29——delgroup删除组

在使用Linux或macOS日常开发中&#xff0c;熟悉一些基本的命令有助于提高工作效率&#xff0c;delgroup 是用于删除用户组的一个命令。此命令通常由超级用户&#xff08;root&#xff09;运行&#xff0c;或者通过 sudo 提权来操作。本篇学习记录delgroup命令的基本使用。 下面…

字节暑期实习-网络运维工程师面经

岗位描述 这个是ByteIntern实习&#xff0c;是暑期实习岗位 岗位 一面 先自我介绍 抓项目技术&#xff08;会进行确认是什么技术&#xff09; TCP的三次握手和四次挥手 序列号和确认应答号的位置和大小 序列号是随机的吗&#xff1f; 序列号为什么是随机的&#xff1f; …

5.3刷题

P3370 【模板】字符串哈希 #include<bits/stdc.h> using namespace std; #define int long long typedef unsigned long long ull; int n; ull myhash(string s){ull code 0, x 131, y 140814840257324663;for(int i 0; i < s.size(); i){code (code * x (ull)…

Kettle下载安装教程

## 什么是Kettle Kettle&#xff08;现在也称为Pentaho Data Integration&#xff0c;简称PDI&#xff09;是一款开源的ETL&#xff08;Extract-Transform-Load&#xff09;工具&#xff0c;用于数据抽取、转换和加载。它允许用户通过图形化界面设计和执行数据集成流程&#xf…

FreeRtos实战从入门到精通--任务创建和删除(动态方法)--事了拂衣去,深藏功与名

FreeRtos是之前的一些聪明的工程师写的免费且开源的嵌入式实时操作系统代码&#xff0c;由于我们实际工作中不需要再去写rtos&#xff0c;我们只需要用就行了&#xff0c;所以博主这里只分享项目工程实战相关的内容&#xff0c;具体rtos源码&#xff0c;可以无需理会&#xff0…

Java通用Mapper自定义方法

目录 一、定义通用 Mapper 接口二、继承通用 Mapper 实现自定义方法三、注册自定义 Mapper 接口四、在实体类对应的 Mapper 接口中使用自定义方法五、实现自定义方法的 SQL 逻辑注解方式XML 映射文件方式六、使用自定义方法七、注意事项在 Java 持久层开发中,MyBatis 的通用 M…

Android WebRTC回声消除

文章目录 安卓可用的回声消除手段各种回声消除技术优缺点WebRTC回声消除WebRTC回声消除回声消除处理流程WebRTC AECM APP 安卓可用的回声消除手段 硬件回声消除 使用 AudioRecord 的 VOICE_COMMUNICATION 模式&#xff1a;通过 AudioRecord 的 VOICE_COMMUNICATION 音频源可以…