题意: 思路: [问题分析] 求最长两条不相交路径,用最大费用最大流解决. [建模方法] 把第i个城市拆分成两个顶点<i.a>,<i.b>. 1.对于每个城市i,连接(<i.a>,<i.b>)一条容量为1,费用为1的有向边,特殊地(<1.a>,<1.b>)和(<N.a>,<N.b>)容量设为2. 2.如果城市i,j(j>i)之间有航线,从<i.b>到<j.a>连接一条容量为1,费用…
[题意] W 公司有 m 个仓库和 n 个零售商店.第 i 个仓库有ai 个单位的货物:第 j 个零售商店需要b j 个单位的货物. 货物供需平衡,即SIGMA(A)=SIGMA(B). 从第 i 个仓库运送每单位货物到第 j 个零售商店的费用为 cij .试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少. 输入文件示例input.txt2 3220 280170 120 21077 39 105150 186 122 输出文件示例output.txt4850069140 […
题意: 思路: [问题分析] 最大费用最大流问题. [建模方法] 把网格中每个位置拆分成网络中两个节点<i.a>,<i.b>,建立附加源S汇T. 1.对于每个顶点i,j为i东边或南边相邻的一个节点,连接节点<i.b>与节点<j.a>一条容量为无穷大,费用为0的有向边. 2.从每个石块顶点<i.a>到<i.b>连接一条容量为1,费用为1的有向边. 3.从每个非障碍顶点<i.a>到<i.b>连接一条容量为无穷大,费…
题意: 思路: [问题分析] 最大费用最大流问题. [建模方法] 把网格中每个位置抽象成网络中一个节点,建立附加源S汇T. 1.对于每个顶点i,j为i东边或南边相邻的一个节点,连接节点i与节点j一条容量为1,费用为该边价值的有向边. 2.对于每个顶点i,j为i东边或南边相邻的一个节点,连接节点i与节点j一条容量为无穷大,费用为0的有向边. 3.从S到每个出发点i连接一条容量为该点出发的机器人数量,费用为0的有向边. 4.从每个目标点i到T连接一条容量为可以到达该点的机器人数量,费用为0的有向边.…
题意: 思路: [问题分析] 求图的最大权不相交路径及其变种,用费用最大流解决. [建模方法] 规则(1) 把梯形中每个位置抽象为两个点<i.a>,<i.b>,建立附加源S汇T. 1.对于每个点i从<i.a>到<i.b>连接一条容量为1,费用为点i权值的有向边. 2.从S向梯形顶层每个<i.a>连一条容量为1,费用为0的有向边. 3.从梯形底层每个<i.b>向T连一条容量为1,费用为0的有向边. 4.对于每个点i和下面的两个点j,分别…
传送门 费用流sb题. 直接从sss向每个点连边,容量为现有物品量. 然后从ttt向每个点连边,容量为最后库存量. 由于两个点之间可以互相任意运送物品,因此相邻的直接连infinfinf的边就行了. 代码: #include<bits/stdc++.h> #define N 205 #define M 50005 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch…
给定正整数序列x1,..., xn (n<=500).(1)计算其最长递增子序列的长度s.(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列.(3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长度为s的递增子序列. 这题求的其实是最长非递减子序列.. 第一问,是个经典的DP,dp[i]表示序列x1...xi且以xi结尾的LIS. 第二问,这么建容量网络: x1...xn中每个i,拆作两点i和i',连<i,i'>容量1的边 源点和所有dp[i]==1的…
题意: 思路: [问题分析] 二分图多重匹配问题,用最大流解决. [建模方法] 建立二分图,每个类别为X集合中的顶点,每个题为Y集合中的顶点,增设附加源S和汇T. 1.从S向每个Xi连接一条容量为该类别所需数量的有向边. 2.从每个Yi向T连接一条容量为1的有向边. 3.如果一个题i属于一个类别j,连接一条从Xj到Yi容量为1的有向边. 求网络最大流,如果最大流量等于所有类别所需之和,则存在解,否则无解.对于每个类别,从X集合对应点出发的所有满流边,指向的B集合中的顶点就是该类别的所选的题(一个…
题意: 思路: 0.[问题分析] 枚举答案转化为判定性问题,然后最小路径覆盖,可以转化成二分图最大匹配,从而用最大流解决. [建模方法] 枚举答案A,在图中建立节点1..A.如果对于i<j有i+j为一个完全平方数,连接一条有向边(i,j).该图是有向无环图,求最小路径覆盖.如果刚好满足最小路径覆盖数等于N,那么A是一个可行解,在所有可行 解中找到最大的A,即为最优解. 具体方法可以顺序枚举A的值,当最小路径覆盖数刚好大于N时终止,A-1就是最优解. [建模分析] 由于是顺序放球,每根柱子上的球满…
这道题还是很好的. 考察了选手对网络流的理解. 首先,任意两个相邻点之间的运货量时没有限制的. 我们可以将相邻点之间的流量建为无限大,单位费用设为 1,代表运输一个货物需耗费一个代价. 由于题目要求最后所有人的货物量都相同,则说明每个人在最后拥有的货物量一定是总货物量的平均数,我们设为 $w$. 考虑一个点开始是的货物量为 $a$,则讨论两种情况. 1. a > w,则说明 $a$ 需要向周围的站点送出 $a-w$ 个货物以达到供需平衡. 我们从源点向该点流进 (a-w) 的流量,费用为 0 2…