最小费用最大流改动下,将本来的正边改成负边 就成了 最大费用最大流。

然后构图,自己慢慢构。

拆点,建立流量为1 费用为权值的边。

#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=2000,maxm=100000,inf=100000000;struct Edge
{Edge(){};Edge(int a,int b,int c,int d){v=a;f=b;w=c;nxt=d;}int v,f,w,nxt;
};int Map[30][30];
int src,sink;
struct Edge e[maxm+10];
int g[maxn+10];
int nume;
queue<int >que;
int dist[maxn+10];
int prev[maxn+10],pree[maxn+10];
bool inQue[maxn+10];void add(int u,int v,int f,int w)
{e[++nume]=Edge(v,f,-w,g[u]);g[u]=nume;e[++nume]=Edge(u,0,w,g[v]);g[v]=nume;
}bool findPath()
{while(!que.empty()) que.pop();que.push(src);int i;for(i=1;i<=sink;i++) dist[i]=inf;dist[src]=0;memset(inQue,false,sizeof(inQue));inQue[src]=true;while(!que.empty()){int u=que.front();que.pop();for(i=g[u] ; i ;i=e[i].nxt){if(e[i].f>0&&dist[u]+e[i].w<dist[e[i].v]){dist[e[i].v]=dist[u]+e[i].w;prev[e[i].v]=u;pree[e[i].v]=i;if(!inQue[e[i].v]){que.push(e[i].v);inQue[e[i].v]=true;}}}inQue[u]=false;}if(dist[sink]<inf) return true;return false;
}int augment()
{int u=sink;int delta=inf;while(u!=src){if(e[pree[u]].f<delta) delta=e[pree[u]].f;u=prev[u];}u=sink;while(u!=src){e[pree[u]].f-=delta;e[pree[u]^1].f+=delta;u=prev[u];}return dist[sink]*delta;
}
int maxcostflow()
{int cur=0;while(findPath()){cur+=augment();}return cur;
}
int main()
{int n;int i,j;while(scanf("%d",&n)!=EOF){nume=1;memset(g,0,sizeof(g));for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&Map[i][j]);src=1;sink=2*n*n;for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==0&&j==0){add(src,src+n*n,2,0);if(j+1<n) add(src+n*n,i*n+j+1+1,1,0);if(i+1<n) add(src+n*n,(i+1)*n+j+1,1,0);}else if(i==n-1&&j==n-1) add(n*n,sink,2,0);else{add(i*n+j+1,i*n+j+n*n+1,1,Map[i][j]);if(j+1<n) add(i*n+j+n*n+1,i*n+j+1+1,1,0);if(i+1<n) add(i*n+j+n*n+1,(i+1)*n+j+1,1,0);}}printf("%d\n",Map[0][0]+Map[n-1][n-1]-maxcostflow());}return 0;
}

hdu 2686 Matrix 最大费用最大流相关推荐

  1. Going Home HDU - 1533 (最小费用最大流)

    题目链接:https://cn.vjudge.net/problem/HDU-1533 题意:给你n个房子n个人  使得所有人都有一座房子的最小花费 思路:把所有的人与房子建边,最后,源点与所有的人建 ...

  2. POJ 2135 Farm Tour amp;amp; HDU 2686 Matrix amp;amp; HDU 3376 Matrix Again 费用流求来回最短路...

    累了就要写题解,近期总是被虐到没脾气. 来回最短路问题貌似也能够用DP来搞.只是拿费用流还是非常方便的. 能够转化成求满流为2 的最小花费.一般做法为拆点,对于 i 拆为2*i 和 2*i+1.然后连 ...

  3. hdu 1533(最小费用最大流)

    主要是如何建图 #include<stdio.h> #include<queue> #include<string.h> #include<iostream& ...

  4. POJ 2195 Going Home / HDU 1533(最小费用最大流模板)

    题目大意: 有一个最大是100 * 100 的网格图,上面有 s 个 房子和人,人每移动一个格子花费1的代价,求最小代价让所有的人都进入一个房子.每个房子只能进入一个人. 算法讨论: 注意是KM 和 ...

  5. hdu Kaka's Matrix Travels(最小费用最大流)

    把题意写一下:  给你一个n*n的矩阵,每个格子都有一个非负整数,从左上角走到右下角,收集走过的数字,累加,但是只能向右或者向下走,走过之后数字就变为0,让你求从左上角到右下角,走k次之后,所得的最大 ...

  6. HDU 2282 Chocolate (最小费用最大流)

    HDU  2282 Chocolate (最小费用最大流) #include <iostream> #include <cstdio> #include <queue&g ...

  7. HDU 1853 HDU 3488【有向环最小权值覆盖问题 】最小费用最大流

    HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]带权二分图匹配 KM算法 In the kingdom of Henryy, there are N (2 <= N & ...

  8. 2018ACM上海大都会赛: I. Matrix Game(最小费用最大流)

    题目描述 At the start of the matrix game, we have an N x M matrix. Each grid has some balls. The grid in ...

  9. poj 3422 Kaka's Matrix Travels(最小费用最大流)

    题目链接 Kaka's Matrix Travels Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9394   Accep ...

最新文章

  1. java设计一个bank类实现银行_SAP银企直连之平安银行(ECC版)
  2. 生信人的linux考试
  3. HTML4如何让一个DIV居中对齐?float输入日志标题
  4. vue避免重新渲染_小白也能懂的VUE的生命周期探寻
  5. python批量读取grib_windows python读取grib2数据
  6. html单张图片效果,jquery+html5实现单张图片上传预览
  7. 使用Spring Roo进行快速云开发–第2部分:VMware Cloud Foundry
  8. 请教如何保存matlab仿真出来的图,如何保存Matlab绘制出来的图像
  9. 安装配置NTP服务器
  10. Virtualbox安装Debian 安装VBoxGuestAdditions增强工具
  11. 使用QUARKUS开发JSON REST 服务
  12. charles4.0破解和手机抓包
  13. vscode的pip安装
  14. 中职学校计算机教学中,中职学校计算机教学方式
  15. 架构中的应用-XTT 篇
  16. PassMark 更新排行,苹果 M1 杀疯了
  17. Nginx正则表达式locationrewrite
  18. android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)
  19. redis的多路复用原理
  20. MRR@K P@K R@K意义阐述与对比

热门文章

  1. IOCP 浅析与实例
  2. ODBC学习(一)基本理论
  3. 几个预编译指令的用法
  4. EV3 直接命令 - 第 2 课 让你的 EV3 做点什么
  5. OpenShift 与 OpenStack:让云变得更简单
  6. python中的requests模块的使用大全
  7. Linxu的常用命令
  8. JAVA通信编程(五)——串口通讯的补充说明
  9. SoundStream VS Lyra: 谷歌今年新推出的两款AI音频编解码器有何不同?
  10. 论亚马逊QLDB与腾讯TDSQL对历史数据的管理和计算