POJ 3422 Kaka's Matrix Travels 题目链接 题意:一个矩阵.从左上角往右下角走k趟,每次走过数字就变成0,而且获得这个数字,要求走完之后,所获得数字之和最大 思路:有点类似区间k覆盖的建图方法,把点拆了,每一个点有值的仅仅能选一次,其它都是无值的.利用费用流,入点出点之间连一条容量1,有费用的边,和一条容量k - 1,费用0的边,然后其它就每一个点和右边和下边2个点连边.然后跑费用流 代码: #include <cstdio> #include <cstrin…
POJ 3422 Kaka's Matrix Travels 链接:http://poj.org/problem? id=3422 题意:有一个N*N的方格,每一个方格里面有一个数字.如今卡卡要从左上角走到右下角,规定每次仅仅能向下或者向右走.每次走到一个格子,将得到该格子的数字,而且该格子的数字变为0.当卡卡走一次时,非常easy求出最大值,问卡卡走k次,可以得到的最大值为多少. 思路:最小费用最大流 关键是怎样构图 1. 将N*N个格点拆分为两个点(i,i + N*N),每一个点之间连一条流…
解题报告 题目传送门 题意: 从n×n的矩阵的左上角走到右下角,每次仅仅能向右和向下走,走到一个格子上加上格子的数,能够走k次.问最大的和是多少. 思路: 建图:每一个格子掰成两个点,分别叫"出点","入点", 入点到出点间连一个容量1.费用为格子数的边.以及一个容量∞,费用0的边. 同一时候.一个格子的"出点"向它右.下的格子的"入点"连边.容量∞,费用0. 源点向(0,0)的入点连一个容量K的边.(N-1,N-1)的出点向…
原题 给一个N*N的方阵,从[1,1]到[n,n]走K次,走过每个方格加上上面的数,然后这个格上面的数变为0.求可取得的最大的值. 要求最大值,所以把边权全为负跑最小费用即可.因为只有第一次经过该点的时候会得到价值,所以我们将一个点拆为两个,连一条容量为1费用为负权的边和一条容量为k-1费用为0的边.然后和右和下的点连边为容量为k,费用为0的边.跑费用流即可. #include<cstdio> #include<queue> #include<algorithm> #i…
POJ 2135 Farm Tour (网络流,最小费用最大流) Description When FJ's friends visit him on the farm, he likes to show them around. His farm comprises N (1 <= N <= 1000) fields numbered 1..N, the first of which contains his house and the Nth of which contains the b…
/* poj3422 Kaka's Matrix Travels 不知道 k次 dp做为什么不对??? 看了大牛的代码,才知道还可以这样做! 开始没有理解将a 和 a‘ 之间建立怎样的两条边,导致程序一直陷入死循环,真心花了好长时间,快崩溃了.无语..... 题意:有个方阵,每个格子里都有一个非负数,从左上角走到右下角,每次走一步,只能往右或往下走,经过的数字拿走 每次都找可以拿到数字和最大的路径走,走k次,求最大和 这是 最大费用最大流 问题 每次spfa都找的是一条和最大的路径 s--到左上…
Kaka's Matrix Travels Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8006   Accepted: 3204 Description On an N × N chessboard with a non-negative number in each grid, Kaka starts his matrix travels with SUM = 0. For each travel, Kaka mo…
http://poj.org/problem?id=3686 题意:给出n个玩具和m个工厂,每个工厂加工每个玩具有一个时间,问要加工完这n个玩具最少需要等待的平均时间.例如加工1号玩具时间为t1,加工2号玩具时间为t2.那么先加工玩具1再加工玩具2花费的时间是t1+(t1+t2),先加工玩具2在加工玩具1花费的时间是t2+(t1+t2). 思路:假设所有玩具在一个工厂加工,那么等待的时间是 t1 + (t1 + t2) + (t1 + t2 + t3) + …… = t1 * n + t2 *…
Kaka's Matrix Travels 题目: 给出一个矩阵.求仅仅能向下或者向右的情况下能得到的最大和.一般的是指遍历一次,而这个是能够反复走K次.每经过一次后就把该点设为0.求最大和. 算法: 想到了用网络流做.可是建图没什么自信.看了别人的才敢開始建.建图事实上也不难,就是有一个拆点处理,由于,一个点走一次后其上的值就为0了.这个处理非常巧妙!就是拆点后建立两条边,一条是有价值的边,一条是没价值,可是能够通过的边. 由于,尽管该点没价值,可是有可能其它点要通过它,这就是这题的巧妙之处.…
题目大意: 有一个最大是100 * 100 的网格图,上面有 s 个 房子和人,人每移动一个格子花费1的代价,求最小代价让所有的人都进入一个房子.每个房子只能进入一个人. 算法讨论: 注意是KM 和 MCMF算法,我写的是MCMF算法,一开始想的是连10000个点,但是不会连那些大众点之间的边,只会连超级点和普通点之间的边.后来觉得只要连房子点和 人点就可以了.连从人到房子的边,容量是1,花费是他们之间的曼哈顿距离,然后超级源点和超级汇点像上面那样连接,注意连点的时候把他们每个点都具体化一下,就…