题解:CF724E Goods transportation

news/2024/10/3 10:47:35

可以在 cnblog 中阅读。

题意

\(n\) 座城市,第 \(i\) 座城市生产了 \(p_i\) 件货物,最多可以出售 \(s_i\) 件货物,编号小的城市可以向编号大的城市运输至多 \(c\) 件货物,问最多能出售多少货物。

\(n \le 10^4\)

分析

乍一看是一个网络流问题,可以这样建图,令 \(S\) 为源点 \(T\) 为汇点:

\[S \xrightarrow{p_i} i \xrightarrow{s_i} T \]

\[i \xrightarrow{c} j (i < j) \]

然后跑一个最大流就可以。但这样建边第二类就会有 \(O(n^2)\) 条边,寄。

模拟费用流就是应对这样的情况的。我们把最大流问题转换为最小割问题,然后考虑使用 DP 求解。

\(f(i,j)\) 表示前 \(i\) 个点,\(j\) 个点与 \(S\) 的连边未断开,注意到 \((S,i)\)\((i,T)\) 必断其一,则有转移:

\[f(i,j) = \min \begin{cases}f(i-1,j) + p_i + c \times j \\f(i-1,j-1) + s_i \end{cases}\]

分别表示:

  1. 断开 \((S,i)\) 需要断开与前面所有未断开与 \(S\) 连边的点的连边;
  2. 断开 \((i,T)\)

时间复杂度 \(O(n^2)\)

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)const int N=1e5+5;
int n,c;
int s[N],p[N];
int f[N];signed main()
{IOS;cin>>n>>c;for(int i=1;i<=n;i++) cin>>p[i];for(int i=1;i<=n;i++) cin>>s[i];for(int i=1;i<=n;i++){f[i]=f[i-1]+s[i];for(int j=i-1;j>=1;j--)f[j]=min(f[j]+c*j+p[i],f[j-1]+s[i]);f[0]+=p[i];}int ans=1e16;for(int i=0;i<=n;i++) ans=min(ans,f[i]);cout<<ans<<endl;return 0;
}

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

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

相关文章

南沙C++信奥赛陈老师解一本通题 2099:【23CSPJ普及组】公路(road)

​2099:【23CSPJ普及组】公路(road) 时间限制: 1000 ms 内存限制: 524288 KB提交数:3793 通过数: 1575 【题目描述】小苞准备开着车沿着公路自驾。 公路上一共有 nn 个站点,编号为从 11 到nn。其中站点 ii 与站点i+1i+1 的距离为vivi 公里。 公路上每个站点都可以…

Leetcode 540. 有序数组中的单一元素

1.题目基本信息 1.1.题目描述 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 1.2.题目地址 https://leetcode.cn/problems/sin…

六、redis之set

Redis集合是成员的无序集合。可以用来保存唯一的成员。 注意:对于以下的命令,涉及删除成员的,如果集合中的所有元素都被移除,则集合会被删除。如果集合原先不存在,被当作空集合。 SADD SADD key member [member ...]sadd命令将一系列成员添加到set中。SMEMBERS SMEMBERS k…

IDEA创建Gradle工程-实践

1、下载Gradle 下载地址:https://gradle.org/install/#manually 进入后点击【Binary-only】下载zip包。 (国内下载可能慢,可用阿里镜像:https://mirrors.aliyun.com/macports/distfiles/gradle/)2、安装Gradle 解压zip到自定义目录:G:\OriginLib\gradle-8.9配置环境变量 …

Leetcode 2300. 咒语和药水的成功对数

1.题目基本信息 1.1.题目描述 给你两个正整数数组 spells 和 potions ,长度分别为 n 和 m ,其中 spells[i] 表示第 i 个咒语的能量强度,potions[j] 表示第 j 瓶药水的能量强度。 同时给你一个整数 success 。一个咒语和药水的能量强度 相乘 如果 大于等于 success ,那么它们…

java 反序列化 cc1 复现

cc1java反序列化cc1漏洞复现,环境commoncollections3.2.1, java8u65. 分析的时候从执行命令的部分开始,一点一点的倒退回反序列化接口.目的:在java反序列化的时候会利用构造函数来进行对象的构造,那么我们的目标就是只调用构造函数来执行命令. 源码剖析 Transformer 一个接口,定…

吴恩达机器学习课程 笔记5 神经网络

神经网络原理 神经网络是一种受生物神经系统启发的计算模型,用于学习和处理复杂的数据模式。神经网络通过一系列相互连接的简单处理单元(称为神经元或节点)来模拟大脑的功能。下面详细介绍神经网络的基本原理。 神经网络的基本构成神经元(Neuron):神经元是神经网络的基本…

在树莓派上部署yolo模型推理并使用onnx加速

首先在这里感谢一下这位大佬:学不会电磁场的个人空间-学不会电磁场个人主页-哔哩哔哩视频 (bilibili.com) 这里使用的代码是从手把手教你使用c++部署yolov5模型,opencv推理onnx模型_哔哩哔哩_bilibili处来的我这里只记录下更换成自己的模型的应用以及提供一份全注释的版本树莓…