#网络流,费用流,SLF优化,SPFA,zkw费用流#jzoj 1586 codevs 1362 洛谷 2604 网络扩容

2024-02-11 05:58

本文主要是介绍#网络流,费用流,SLF优化,SPFA,zkw费用流#jzoj 1586 codevs 1362 洛谷 2604 网络扩容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

有两个问题,首先求1到 n n n的最大流(不解释了),然后求1到n使最大流扩展 k k k的费用,每扩展一个最大流,扩展一次边的费用


分析

当然如何做第二个问题,可以重新建一个汇点流量是最大流 + k +k +k,费用为0,并且原来的边再建一次从 u u u v v v,费用为该边的费用,流量无限跑一次最大流,then就讲完了


代码

    #include <cstdio>#include <cstring>#include <queue>#define rr registerusing namespace std;struct node{int y,w,f,next;}e[20005];int n,k=1,dis[1003],ls[1003],ans; bool v[1003];inline int in(){rr int ans=0; rr char c=getchar();while (c<48||c>57) c=getchar();while (c>47&&c<58) ans=(ans<<3)+(ans<<1)+c-48,c=getchar();return ans;}inline void add(int x,int y,int w,int f){e[++k]=(node){y,w,f,ls[x]}; ls[x]=k;e[++k]=(node){x,0,-f,ls[y]}; ls[y]=k;}inline int spfa(){//反向跑spfamemset(v,0,sizeof(v)); memset(dis,127/3,sizeof(dis));dis[n]=0; v[n]=1; rr deque<int>q; q.push_back(n);while (q.size()){rr int x=q.front(); q.pop_front();for (rr int i=ls[x];i;i=e[i].next)if (e[i^1].w&&dis[e[i].y]>dis[x]-e[i].f){dis[e[i].y]=dis[x]-e[i].f;if (!v[e[i].y]){v[e[i].y]=1;if (q.size()&&dis[e[i].y]<dis[q.front()]) q.push_front(e[i].y); else q.push_back(e[i].y);}}v[x]=0;}return dis[n+1]<707406378;}inline int dfs(int x,int now){//长得很像dinicif (x==n) {v[n]=1; return now;}rr int rest=0,f; v[x]=1;for (rr int i=ls[x];i;i=e[i].next)if (!v[e[i].y]&&e[i].w>0&&dis[e[i].y]+e[i].f==dis[x]){rest+=(f=dfs(e[i].y,min(e[i].w,now-rest)));if (f) ans+=e[i].f*f,e[i].w-=f,e[i^1].w+=f;if (now==rest) return now;}return rest;}inline int zkw(){int ans=0;while (spfa()){do{memset(v,0,sizeof(v));ans+=dfs(n+1,1e9);}while (v[n]);}return ans;}int main(){n=in(); rr int m=in(),t=in();rr int w[m+1],f[m+1],t1;for (rr int i=1;i<=m;i++){rr int x=in(),y=in();w[i]=in(); f[i]=in();add(x,y,w[i],0);}add(n+1,1,2333333,0);printf("%d ",t1=zkw()); t+=t1;e[k].w=0; e[k^1].w=t;//超级源点for (rr int i=1;i<=m;i++) e[i<<1].w=w[i],e[i<<1|1].w=0;//重新建图for (rr int i=1;i<=m;i++) add(e[i<<1|1].y,e[i<<1].y,23333333,f[i]);//无限流量zkw(); return !printf("%d",ans);}

这篇关于#网络流,费用流,SLF优化,SPFA,zkw费用流#jzoj 1586 codevs 1362 洛谷 2604 网络扩容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698994

相关文章

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML