HDU 3523 Image copy detection(KM)

原创 2017年01月03日 20:01:43
#include<iostream>
using namespace std;
const int maxn=100+5;
int w[maxn][maxn],n,m;
int lx[maxn],ly[maxn];
int Left[maxn];
bool s[maxn],t[maxn];
int a[maxn][maxn];
bool match(int i)
{
    s[i]=true;
    for(int j=1;j<=n;j++) if(lx[i]+ly[j]==w[i][j]&&!t[j]){
        t[j]=true;
        if(!Left[j]||match(Left[j])){
            Left[j]=i;
            return true;
        }
    }
    return false;
}
void update()
{
    int a=(1<<30);
    for(int i=1;i<=n;i++) if(s[i])
        for(int j=1;j<=n;j++) if(!t[j])
            a=min(a,lx[i]+ly[j]-w[i][j]);
    for(int i=1;i<=n;i++){
        if(s[i]) lx[i]-=a;
        if(t[i]) ly[i]+=a;
    }
}
void KM()
{
    for(int i=1;i<=n;i++){
        Left[i]=lx[i]=ly[i]=0;
        for(int j=1;j<=n;j++)
            lx[i]=max(lx[i],w[i][j]);
    }
    for(int i=1;i<=n;i++){
        for(;;)
        {
            for(int j=1;j<=n;j++) s[j]=t[j]=0;
            if(match(i)) break;else update();
        }
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;i++)
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
            for(int j=1;j<=n;j++)
                scanf("%d",&a[i][j]);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                w[i][j]=0;
                for(int k=1;k<=m;k++)
                    w[i][j]-=abs(a[k][i]-j);
            }
        KM();
        int ans=0;
        for(int i=1;i<=n;i++) ans+=w[Left[i]][i];
        printf("Case #%d: %d\n",i,-ans);
    }
    return 0;
}

HDU 3523 最小费用流或KM

点击打开链接 题意:这题的题意隐晦的可以,中间不说了直接说求什么,求的是你画一张照片,照片有n个元素,1到n每个出现一次,问你对于上面的m张照片,如何分配你画的1到n使得题目中的式子的值最小,解释第二...
  • Dan__ge
  • Dan__ge
  • 2016年06月20日 15:53
  • 689

hdu KM小集(中低难度)

源自-------------------------------------Ice_Crazy hdu2255     KM模板题。 hdu3722     KM模板题。 hdu...
  • Ice_Crazy
  • Ice_Crazy
  • 2013年08月01日 09:10
  • 1457

mysql服务提示无法启动(3523报错)

今天刚从官网下载了最新的windows mysql-5.7.20-winx64 64位的MySQL服务端,非常无语的就是,照着以前安装的经验: 1.复制一个配置文件命名为my.ini,然后将里面的内容...
  • wp136470
  • wp136470
  • 2017年11月16日 13:52
  • 129

二分图匹配(KM算法)n^3

#include #include #include #include const int maxn = 301; const int INF = (1
  • VB0vs
  • VB0vs
  • 2014年10月01日 21:46
  • 585

KM算法(完备匹配下的最大权匹配)

KM算法求的是完备匹配下的最大权匹配: 在一个二分图内,左顶点为X,右顶点为Y,现对于每组左右连接XiYj有权wij,求一种匹配使得所有wij的和最大。 题目:http://acm.hdu.edu....
  • M_GSir
  • M_GSir
  • 2016年10月24日 09:22
  • 527

Uva11383 二分图的完美匹配(深入理解KM算法)

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2378...
  • u013573047
  • u013573047
  • 2015年10月09日 20:41
  • 599

【POJ 2195】 Going Home(KM算法求最小权匹配)

【POJ 2195】 Going Home(KM算法求最小权匹配) Going Home Time Limit: 1000MS   Memory Limit: 65...
  • ChallengerRumble
  • ChallengerRumble
  • 2016年01月24日 16:08
  • 1370

数字图像处理 边缘特征提取 Image edge detection

Linear Image Processing
  • u011368821
  • u011368821
  • 2014年09月27日 17:29
  • 1849

二分图(三)——KM算法

KM算法手工模拟
  • zxn0803
  • zxn0803
  • 2015年11月23日 18:37
  • 4424

【原创】KM算法的Bfs写法

KM算法的Bfs写法引入–DfsKM的时间复杂度我们已经学习了KM算法,现在我们来分析一下它的时间复杂度。bool dfs(int s) { visx[s]=1; for(int i=...
  • c20182030
  • c20182030
  • 2017年06月16日 13:51
  • 373
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 3523 Image copy detection(KM)
举报原因:
原因补充:

(最多只允许输入30个字)