正题

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


题目大意

给出nnn个点mmm条边的一张图,没条边iii流量为cic_ici​,费用是did_idi​,然后缩小一个流量费用是aia_iai​,增加一个流量费用是bib_ibi​。

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

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

1≤n≤5000,1≤m≤30001\leq n\leq 5000,1\leq m\leq 30001≤n≤5000,1≤m≤3000


解题思路

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

然后对于一条边增流的费用就是ai−dia_i-d_iai​−di​,退流的费用是bi+dib_i+d_ibi​+di​

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


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. 3597: [Scoi2014]方伯伯运椰子

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

  2. [bzoj3597][SCOI2014]方伯伯运椰子

    3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec Memory Limit: 64 MB Submit: 353 Solved: 215 [Submit][Statu ...

  3. [Luogu P3288] [BZOJ 3597] [SCOI2014]方伯伯运椰子

    洛谷传送门 BZOJ传送门 题目描述 四川的方伯伯为了致富,决定引进海南的椰子树.方伯伯的椰子园十分现代化,椰子园中有一套独特的交通系统. 现在用点来表示交通节点,边来表示道路.这样,方伯伯的椰子园就 ...

  4. bzoj3597: [Scoi2014]方伯伯运椰子【分数规划+费用流】

    Description 四川的方伯伯为了致富,决定引进海南的椰子树. 方伯伯的椰子园十分现代化,椰子园中有一套独特的交通系统. 现在用点来表示交通节点,边来表示道路.这样,方伯伯的椰子园就可以看作一个 ...

  5. SCOI2014方伯伯运椰子 (分数规划+SPFA)

    题目描述 四川的方伯伯为了致富,决定引进海南的椰子树.方伯伯的椰子园十分现代化,椰子园中有一套独特的交通系统. 现在用点来表示交通节点,边来表示道路.这样,方伯伯的椰子园就可以看作一个有 n + 2 ...

  6. jzoj3852-单词接龙【0/1分数规划,负环】

    正题 题目链接:https://jzoj.net/senior/#main/show/3852 题目大意 nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长. 解题思 ...

  7. BZOJ3597 [Scoi2014]方伯伯运椰子 【二分 + 判负环】

    题目链接 BZOJ3597 题解 orz一眼过去一点思路都没有 既然是流量网络,就要借鉴网络流的思想了 我们先处理一下那个比值,显然是一个分数规划,我们二分一个\(\lambda = \frac{X ...

  8. BZOJ3597 SCOI2014方伯伯运椰子(分数规划+spfa)

    即在总流量不变的情况下调整每条边的流量.显然先二分答案变为求最小费用.容易想到直接流量清空跑费用流,但复杂度略有些高. 首先需要知道(不知道也行?)一种平时基本不用的求最小费用流的算法--消圈法.算法 ...

  9. BZOJ 3597 [Scoi2014]方伯伯运椰子

    01分数规划+判负环 看到分数就直接上分数规划嘛--瞎推一下式子就行了.不知道什么是分数规划就去看胡学长论文啦. 一不小心忘记睡觉了.好困啊,把from打成flow差点没看出来--感觉身体被掏空,明天 ...

最新文章

  1. Win2003配置邮件服务器
  2. Windows8.1还原文件类型的默认打开方式
  3. java jedis_Java操作Redis之Jedis用法详解
  4. 【报告分享】2019年中国智能门锁发展与应用白皮书.pdf
  5. 零基础学python还是c语言-学习汇编还是学习python,自己刚学完C语言,学习那个好呢?...
  6. 为什么一定要重视隐式反馈?
  7. 关于这个blog使用的问题?
  8. 如何关闭IE浏览器安全设置检查功能
  9. aspectsof的意思_aspect of是什么意思
  10. 计算机应用基础 第一次形成作业(计算机知识综合测试,在线答题)
  11. 腾讯云-产品开通和密钥查看
  12. 基于惯性传感器的轨迹记录系统
  13. springboot界面上传文件和在页面上显示文件
  14. 【Opencv项目实战】背景替换:动态背景移除与替换(cvzone+MediaPipe)
  15. Uos统信系统 nginx
  16. volice java_Volice~亡者之声~
  17. Qt编写可视化大屏电子看板系统30-模块8物料管理
  18. Lotus的2008
  19. 以水稻为例教你如何使用BSA方法进行遗传定位(下篇)
  20. Ubuntu搜狗输入法 打字乱码

热门文章

  1. php大数组查找算法,PHP简单的数组查找算法分享
  2. oracle重新编译package,如何有效的编译数据库中的失效对象(Package,trigger等)
  3. 山东大学计算机非全上课,山东大学非全日制研究生上课方式
  4. java context.write_Channel.write() 和 ChannelHandlerContext.write() 的区别
  5. 计算机组成原理第04章在线测试,计算机组成原理第四章单元测试(二)(含答案).docx...
  6. python调用libvirt_通过python获取kvm虚拟机的监控信息(基于libvirt API)
  7. python 创建目录_第二天:Python中目录及文件操作
  8. 算法设计与分析——贪心算法——单个出水口打水问题
  9. C++与C语言中有关数组中元素排序
  10. [Java基础]Stream流的收集操作