摘要: 题目:给出n*kk的矩阵,格子a[i][k]表示第i个客户需要第k种货物a[i][k]单位。给出m*kk的矩阵,格子b[j][k]表示第j个供应商可以提供第k种货物b[j][k]单位。再给出k个n*m的矩阵,格子c[k][i][j]表示第k种货物由j供应商提供给客户i的话,每单位运费为c[k][i][j]。问最小费用。分析: 刚开始时,虽然考虑到每种货物其实是不相关的,但是想到在跑费用流时应该没多大影响,所以直接建图,跑最小费用流,TLE了。。。 后来对于每种货物单独来考虑,即建图之后跑一次最小费用流,进行k次求费用流之后,判断总流是否等于需求的货物数量。这样建图,节点数明显减少了很多,实.. 阅读全文
posted @ 2013-09-05 20:27 yejinru 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题目:给出一个图,问最少删除多少个点,使得从点1到点n经过的点数超过k个。分析: 上网搜了一下,发现很多人用网络流做的,发现我不会。再后来看到这篇说网络流的做法是错的,囧。 后来发现点数有点少,直接上爆搜。每次搜索前先跑一遍最短路,判断是否满足,如果满足更新答案,退出。 否则,在求最短路时记录一下路径,然后枚举删除最短路上的点,继续搜。 第一次写时,记录路径用的是全局变量,每次搜下一层的时候就会变,发现居然也A了。。。 我试了一下,发现n不会等于1。。。#include #include #include #include #include #include #include #in... 阅读全文
posted @ 2013-09-05 16:16 yejinru 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目:给出n*n的方格矩阵,现在从左上方走m次到右下方,问m次能够获得的最大价值和。分析:最大费用流。拆点进行限制每个格子只取一次,假设点x拆成 x,xx,右边(假设有)y,yy,下方(假设有)z,zz 点 点 流量 费用 则:x , xx , 1 , -a[i][j] x , xx , m , 0 xx, y , m , 0 xx , z , m , 0 用最小费用流增广m次即可#include #include #include #include #include #include #include #include #include #include #in... 阅读全文
posted @ 2013-09-05 14:43 yejinru 阅读(275) 评论(0) 推荐(0) 编辑