正题

题目链接:https://www.luogu.com.cn/problem/P3288


题目大意

给出\(n\)个点\(m\)条边的一张图,没条边\(i\)流量为\(c_i\),费用是\(d_i\),然后缩小一个流量费用是\(a_i\),增加一个流量费用是\(b_i\)。

要求改动图之后最大流不减少

假设减少的费用是\(\Delta X\),改动次数是\(k\),求最大化\(\frac{\Delta X}{k}\)

\(1\leq n\leq 5000,1\leq m\leq 3000\)


解题思路

因为最大流不减少,那么显然因为初始边,最大流也不能增加,所以,每次肯定是选一条回路增流或者退流,这样就是把增流的丢到环上退流的去。

然后对于一条边增流的费用就是\(a_i-d_i\),退流的费用是\(b_i+d_i\)

然后最大化的那个显然是一个分数规划,就直接二分答案然后边权加上答案看有没有负环就好了。


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=5e3+10;
struct node{
int to,next;
double w;
}a[N<<1];
int n,m,tot,ls[N],cnt[N];
double f[N];bool v[N];queue<int> q;
void addl(int x,int y,double w){
a[++tot].to=y;
a[tot].next=ls[x];
a[tot].w=w;
ls[x]=tot;return;
}
bool SPFA(double w){
for(int i=1;i<=n+2;i++)f[i]=1e100,cnt[i]=0;
q.push(n+1);f[n+1]=cnt[n+1]=0;
while(!q.empty()){
int x=q.front();q.pop();v[x]=0;
for(int i=ls[x];i;i=a[i].next){
int y=a[i].to;
if(f[x]+a[i].w+w<f[y]){
f[y]=f[x]+a[i].w+w;
cnt[y]=cnt[x]+1;
if(cnt[y]>=n&&a[i].w<0)return 1;
if(!v[y])q.push(y),v[y]=1;
}
}
}
return 0;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int x,y;double A,B,C,D;
scanf("%d%d",&x,&y);
scanf("%lf%lf%lf%lf",&A,&B,&C,&D);
// if(x==n+1)A=0,B=0,D=0;
if(C>0)addl(y,x,A-D);
addl(x,y,B+D);
}
double l=0,r=1e8;
for(int i=1;i<=100;i++){
double mid=(l+r)/2.0;
if(SPFA(mid))l=mid;
else r=mid;
}
printf("%.2lf\n",(l+r)/2.0);
return 0;
}

P3288-[SCOI2014]方伯伯运椰子【0/1分数规划,负环】的更多相关文章

  1. bzoj 3597: [Scoi2014]方伯伯运椰子 0/1分数规划

    3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 144  Solved: 78[Submit][Status ...

  2. 2019.03.28 bzoj3597: [Scoi2014]方伯伯运椰子(01分数规划)

    传送门 题意咕咕咕有点麻烦不想写 思路: 考虑加了多少一定要压缩多少,这样可以改造边. 于是可以通过分数规划+spfaspfaspfa解决. 代码: #include<bits/stdc++.h ...

  3. bzoj 3597: [Scoi2014]方伯伯运椰子 [01分数规划 消圈定理 spfa负环]

    3597: [Scoi2014]方伯伯运椰子 题意: from mhy12345 给你一个满流网络,对于每一条边,压缩容量1 需要费用ai,扩展容量1 需要bi, 当前容量上限ci,每单位通过该边花费 ...

  4. bzoj3597[Scoi2014]方伯伯运椰子 01分数规划+spfa判负环

    3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec  Memory Limit: 64 MBSubmit: 594  Solved: 360[Submit][Statu ...

  5. 3597: [Scoi2014]方伯伯运椰子[分数规划]

    3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec  Memory Limit: 64 MB Submit: 404  Solved: 249 [Submit][Sta ...

  6. bzoj 3597: [Scoi2014]方伯伯运椰子

    Description Input 第一行包含二个整数N,M 接下来M行代表M条边,表示这个交通网络 每行六个整数,表示Ui,Vi,Ai,Bi,Ci,Di 接下来一行包含一条边,表示连接起点的边 Ou ...

  7. Bzoj3597: [Scoi2014]方伯伯运椰子

    题面 传送门 Sol 消圈定理:如果一个费用流网络的残量网络有负环,那么这个费用流不优 于是这个题就可以建出残量网络,然后分数规划跑负环了 # include <bits/stdc++.h> ...

  8. [SCOI2014]方伯伯运椰子

    嘟嘟嘟 01分数规划思维题. 题中要求交通总量不减少,那么如果总量增加的话,总费用就会增加,所以一定不是更优的解.那么总量守恒. 这是不是就想到了网络流?对于每一个节点流入量等于流出量.然后就是很有思 ...

  9. [bzoj3597][scoi2014]方伯伯运椰子——分数规划,负环

    题解 目标就是 \[Maximize\ \lambda = \frac{X-Y}{k}\] 按照分数规划的一般规律, 构造: \[g(\lambda) = \lambda k + Y - X\] 由于 ...

随机推荐

  1. Centos7上安装最新的nodejs

    下载nodejs包 安装wget yum install -y wget 下载nodejs到/usr/local/nodejs/下 https://cdn.npm.taobao.org/dist/no ...

  2. uwp Button的动态效果

    你应该覆盖Button样式 <Page.Resources> <Style TargetType="Button" x:Key="CustomButto ...

  3. 【版本管理工具】git的介绍及常用命令总结

    1 git简介 1.1  git是什么? "Git 是一个分布式版本控制软件,与CVS.Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可 ...

  4. 设置一个元素的HTML内容

    问题 你需要一个元素中的HTML内容 方法 可以使用Element中的HTML设置方法具体如下: Element div = doc.select("div").first(); ...

  5. Git中使用.gitignore忽略文件的推送

    转载自:https://blog.csdn.net/lk142500/article/details/82869018 windows下可以用另存为生成gitignore 文件 1 简介 在使用Git ...

  6. configparser生成模块写

    # -*-coding:utf-8-*-__author__ = "logan.xu"#写配置文件import configparserconfig = configparser. ...

  7. linux centos7 df命令

    2021-08-04 1. df 命令简介 linux 中 df 命令的功能是用来检查 linux 服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信 ...

  8. golang redis

    安装 下载第三方包: go get -u github.com/go-redis/redis/v9 连接 // 定义一个rdis客户端 var redisdb *redis.Client // 初始化 ...

  9. react + layui 坑总结

    与react 结合的时候,layui 是纯dom操作,而react是虚拟dom ,二者的结合难免会出现诸多问题. 1 select 下拉框 默认值的修改要通过defaultValue 属性来修改,并且 ...

  10. Pytest 系列(29)- 详解 allure.dynamic 动态生成功能

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 @allure.title  ...