[SDOI2006] 仓库管理员的烦恼 - 二分图最大权匹配
最小化代价,即最大化“本土”货物的数量
于是就是个二分图最大权匹配裸题
#include <bits/stdc++.h>
using namespace std;
#define reset(x) memset(x,0,sizeof x)
// Input: g[v][u] (v in II, u in I)
// Method: solve(n1,n2)
// Output: ans, mat[u] (u in I)
namespace km {
const int inf=1e+9;
const int MX=405;
int n,m;
int py[MX],vy[MX],pre[MX];
int slk[MX],g[MX][MX],kx[MX],ky[MX],ans;
int mat[MX];
void clear() {
n=m=0;
reset(py); reset(vy); reset(pre);
reset(slk); reset(g); reset(kx); reset(ky);
}
void KM(){
int i,j,k,x,p=0;
int d,t;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
kx[i]=max(kx[i],g[i][j]);
for(i=1;i<=n;i++){
memset(vy,0,sizeof(int)*(n+1));
for(j=0;j<=n;j++) slk[j]=inf;
memset(pre,0,sizeof(int)*(n+1));
for(py[k=0]=i;py[k];k=p){
d=inf;vy[k]=1;x=py[k];
for(j=1;j<=n;j++)if(!vy[j]){
if((t=kx[x]+ky[j]-g[x][j])<slk[j])slk[j]=t,pre[j]=k;
if(slk[j]<d)d=slk[j],p=j;
}
for(j=0;j<=n;j++)
if(vy[j])kx[py[j]]-=d,ky[j]+=d;
else slk[j]-=d;
}
for(;k;k=pre[k])py[k]=py[pre[k]];
}
}
void solve(int n1,int n2){
n=max(n1,n2);
KM();
ans=0;
for(int i=1;i<=n;i++)ans+=kx[i]+ky[i];
for(int i=1;i<=n1;i++)mat[i]=(g[py[i]][i]?py[i]:0);
}
}
int main() {
int n,tot=0;
cin>>n;
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
cin>>km::g[i][j];
tot+=km::g[i][j];
}
}
km::solve(n,n);
cout<<tot-km::ans;
}
[SDOI2006] 仓库管理员的烦恼 - 二分图最大权匹配的更多相关文章
- POJ2195 Going Home[费用流|二分图最大权匹配]
Going Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22088 Accepted: 11155 Desc ...
- Hdu2255 奔小康赚大钱(二分图最大权匹配KM算法)
奔小康赚大钱 Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好 ...
- [ACM] HDU 2255 奔小康赚大钱 (二分图最大权匹配,KM算法)
奔小康赚大钱 Problem Description 传说在遥远的地方有一个很富裕的村落,有一天,村长决定进行制度改革:又一次分配房子. 这但是一件大事,关系到人民的住房问题啊. 村里共同拥有n间房间 ...
- POJ2195 Going Home (最小费最大流||二分图最大权匹配) 2017-02-12 12:14 131人阅读 评论(0) 收藏
Going Home Description On a grid map there are n little men and n houses. In each unit time, every l ...
- HDU2255 奔小康赚大钱 —— 二分图最大权匹配 KM算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) ...
- 二分图最大权匹配——KM算法
前言 这东西虽然我早就学过了,但是最近才发现我以前学的是假的,心中感慨万千(雾),故作此篇. 简介 带权二分图:每条边都有权值的二分图 最大权匹配:使所选边权和最大的匹配 KM算法,全称Kuhn-Mu ...
- UOJ#80. 二分图最大权匹配 模板
#80. 二分图最大权匹配 描述 提交 自定义测试 从前一个和谐的班级,有 nlnl 个是男生,有 nrnr 个是女生.编号分别为 1,…,nl1,…,nl 和 1,…,nr1,…,nr. 有若干个这 ...
- @noi.ac - 507@ 二分图最大权匹配
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一天你学了一个能解决二分图最大权匹配的算法,你决定将这个算法应 ...
- [SDOI2017] 新生舞会 - 二分图最大权匹配,分数规划,二分答案
有一个二分图,每个部都有 \(n\) 个点,每条边有两个参数 \(a_e, b_e\),求一种匹配,使得 \(\sum a_i / \sum b_i\) 最大 Solution 显然的分数规划,考虑二 ...
随机推荐
- Microsoft.EntityFrameworkCore.Tools 相关命令
一.前言 Entity Framework(后面简称EF)作为微软家的ORM,自然而然从.NET Framework延续到了.NET Core. 二.程序包管理器控制台 为了能够在控制台中使用命令行来 ...
- java8 常用代码
1. 使用java8 提取出 list 中 bean 的某一属性 public static void main(String[] args) { List<Student> stuLis ...
- Cesium案例解析(三)——Camera相机
目录 1. 概述 2. 实例 2.1. Camera.html 2.2. Camera.js 2.2.1. 飞行至某一点 2.2.2. 飞行至某区域 2.2.3. 两地之间飞行 2.2.4. 设置视图 ...
- Linux报错:rm: cannot remove 'xxx': Is a directory
rm: cannot remove 'xxx': Is a directory表示这个文件是无法remove移除的,因此我们不能仅使用rm来将这个文件夹进行删除,需要使用: rm -rf 命令则可以将 ...
- C#中WinFrom保存文件SaveFileDialog类的使用方法
C#中WinFrom保存文件SaveFileDialog类的使用方法 使用的命名空间是:System.Windows.Forms; 常用属性: Title:保存对话框的标题,默认为"另存 ...
- 基于SSM开发在线家教预约系统源码
开发环境: Windows操作系统开发工具:Eclipse+Jdk+Tomcat8+mysql数据库 注意:次项目运行Tomcat8服务器里面 次项目比较大,需要自行研究 运行效果图 源码及原文链接: ...
- 【python基础语法】模块和包管理,文件的操作(第8天课堂笔记)
''' 模块和包管理 模块和包的定义: 模块:模块是一个Python文件,以.py结尾,包含了Python对象定义和Python语句 包:Python中的包就是一个包含__init__.py文件的目录 ...
- day 8 函数编程_byets
定义 bytes类型是指一堆字节的集合,在python中以b开头的字符串都是bytes类型 b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88' #b开头的都代表是bytes ...
- 网站SEO中服务器优化的三个问题
网站做好之后,站长第一件事就是想到去做SEO,但是有一些网站在做优化的时候,出现一些奇怪的情况,比如说优化已经不错的网站,排名突然就掉下来了:还有一些网站各项优化工作都是非常认真,但是排名却一直不上来 ...
- 纪中21日c组模拟赛
AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL AWSL 题解传送 T1 ...