网络流习题
来源:互联网 发布:好的淘宝零食点知乎 编辑:程序博客网 时间:2024/05/16 16:08
二分图最大匹配
1匈牙利
2最大流 对于每个外籍i,向他可以配合j的英籍 build(i,j,1)
对于每个外籍i build(s,i,1) 对于每个英籍j build(j,t,1)
2.(SCOI2007修车)同一时刻有N位车主带着他们的爱车来到了汽车维修中心 维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的 现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间
费用流
N辆车,M个工人。
把每个工人拆成N个点 A[i][j]表示第i个工人修倒数第j辆车。
对于每辆车i build(s,i,1,0)
和所有n*m拆点build(i,A[j][k],1,time[i][j]*k)
对于所有的拆点 build(A[j][k],t,1,0);
由于求平均ans=最大流/n
考虑第i个工人,他修第j辆车只对后面要修的车有影响,而前面修过的车已经对当前没有影响了
而这个影响就是后面每个将要修理的车都多等待了time的时间
其他边流量都显然为1,每辆车修一次,每个工人一次只能修理一辆车
3.(scut128)给一个长度100的 正整数序列A 定义它的bx子序列是满足 前一个数是后一个数的一个因子
例如 1 2 6 48 96为 1 2 3 6 48 86 96的一个bx序列
对于A 假设 它的最长bx子序列长度为k 求 最少删掉几个数 使得 它的最长子序列长度小于k
T组数据 <=20
n <=100
n个数代表A <=10^9
2
4
1 3 2 6//ans=1
6
2 4 8 3 9 27//ans=2
第一组 bx有 1 3 6 和 1 2 6 删掉 1 或 6都可以满足
第二组 bx有 2 4 8 和 3 9 27 任意从两序列各删掉一个才能满足
sol:先dp求出最长的序列 f[i]表示以a[i]结尾的最长bx序列 f[i]=max(f[j]+1) (a[i]%a[j]==0 j<=i)找到k
对于每个点拆点成一进一出两个点
对于所有f[i]==1的点 build(s,i,1); 表示源点连向起点
对于所有f[i]==k的点 build(i+n,t,1); 表示终点连向汇点
对于所有的f[i]==f[j]+1 && a[i]%a[j]==0 && i>=j 的点 build(j+n,i,1) j的出边连向i的进边
这样建图相当于把所有的最长bx子序列全部建了出来 那我们要求的就是 删掉最少的边 让这个网络流中断 相当于每一条连向汇点的边都会在路径上被破坏 这就是求这个图的 最小割
而又有 最大流最小割定理:网络流中,能够从源点到达汇点的最大流量==如果从网络中移除就能够导致网络流中断的边的集合的最小容量和
所以再跑一次最大流即为答案
- 网络流习题
- 网络流习题
- 网络流习题
- 网络流习题(无代码)
- 网络流 二分图 基本习题
- 网络课后习题
- C++网络习题课
- C++网络习题课
- 一道网络习题
- 网络习题汇总
- Unix网络编程 chapter习题代码
- 习题4-5 IP网络 UVa1590
- 习题4-5 IP网络 UVa 1590
- 习题
- 习题
- 习题
- 习题
- 习题
- 安卓商品展示案例
- Android开发之自定义对话框(2)—加入EditText
- Java方向如何准备BAT技术面试答案(汇总版)
- spring的工作原理以及AOP,IOC,DI等概念
- C#生成验证码
- 网络流习题
- ffmpeg中文文档
- Angular开发(七)-关于组件的生命周期
- Oracle AWR Reports: Understanding I/O Statistics
- 计算机专业方面的期刊介绍
- vue-router直接在html里面使用
- Python爬虫(3)——将维基百科词条导入MySQL
- plsql语法,存储过程,存储函数,触发器等概念
- C++第4次实验(基础班)—循环结构程序设计(参考答案)-项目7-4:加法算式