#include <iostream>
#include <cstring>
#include <algorithm>
#define MAX 1<<28;
using namespace std;
#define MAX 1<<28;
int lx[50], ly[50];
int map[50][50];
int visitx[50], visity[50];
int match[50], slack[50];
int n, m;

int hungary(int u){
    visitx[u] = 1;
    int temp = 0;
    for(int i = 1; i <= m; i++){
        if(visity[i])
            continue;
        temp = lx[u] + ly[i] - map[u][i];
        if(temp == 0){
            visity[i] = 1;
            if(match[i] == 0 || hungary(match[i])){
                match[i] = u;
                return 1;
            }
        }
        else
            slack[i] = min(slack[i], temp);
    }
    return 0;
}

int km(){
    int temp = 0;
    memset(lx, 0, sizeof(lx));
    memset(ly, 0, sizeof(ly));
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
            if(lx[i] < map[i][j])
                lx[i] = map[i][j];
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++)
            slack[j] = MAX;
        while(1){
            memset(visitx, 0, sizeof(visitx));
            memset(visity, 0, sizeof(visity));
            if(hungary(i))
                break;
            else{
            
            temp = MAX;
            for(int j = 1; j <= m; j++)
                if(!visity[j])
                       if(temp > slack[j])
                           temp = slack[j];
    
            if(temp == MAX)
                return 0;     // 无法匹配
            for(int j = 1; j <= n; j++)
                if(visitx[j])
                    lx[j] -= temp;
            for(int j = 1; j <= m; j++)
                if(visity[j])
                    ly[j] += temp;
                else
                    slack[j] -= temp;
            }
        }        
    }    
    return 1;
}

int main(){
    int rewu;
    while(cin >> n){
        cin >> m;
        int res = 0, ans = 0;
        memset(map, 0, sizeof(map));
        memset(match, 0, sizeof(match));
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                cin >> map[i][j];
                map[i][j] *= (n+1);
            }
        }
        for(int i = 1; i <= n; i++){
            cin >> rewu;
            res += map[i][rewu];
            map[i][rewu]++;
        }
        km();
        for(int i = 1; i <= m; i++)
            if(match[i] != 0){
                cout << "match[i]: " << match[i] << endl;
                cout << i << "i: " << map[match[i]][i] << " ";
                ans += map[match[i]][i];
            }
        cout << n - res % (n+1) << " " << ans/(n+1) - res/(n+1) << endl;
        cout << res << " "  << ans << endl;
    }
    return 0;
}

找BUG:

7-找了一上午的BUG的更多相关文章

  1. 找不好重现的bug的一个小技巧————守株待兔

    最近碰到一个问题就是数据库中偶尔出现一条没有id的数据,可恨的是怎么也找不到重现这个问题的原因,只好换种方式来找了,那么就是我标题所说的守株待兔方法. 因为我发现出现bug的数据库里面的数据有个字段为 ...

  2. 找出诡异的Bug:数据怎么存不进去

    带着学生做课程设计.程序一大,课程中做过了小项目,练过了分解动作,一到合起来了,难免还是要乱了分寸.事实上,实战的功夫,就是这样出来的.(课程设计指导视频链接(第36课时,3.18 银行系统开发).课 ...

  3. 找"数学口袋精灵"bug

    团队成员的博客园地址: 刘森松:http://home.cnblogs.com/u/lssh/ 郭志豪:http://home.cnblogs.com/u/gzh13692021053/ 谭宇森:ht ...

  4. 关于selenium IDE找不到元素bug

    使用 selenium IDE 录制脚本,经常会发生 这样一种错误. 页面上,明明存在这个元素,就是找不到. 其实原理很简单   , 按钮 点击,没有时间延迟,但是页面加载,需要一段时间. 页面元素还 ...

  5. POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)

    来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS   Memory Limit: 65536 ...

  6. poj - 2096 概率dp (找bug)

    题意:一个人一天只能找1个bug ,这个bug属于s个子系统中的某一个子系统,属于n种bug 中的某一种 ,求 这个人找出n种bug ,并且s个系统都bug的期望 (每个系统的一定可以找出bug) 一 ...

  7. 如何重现难以重现的bug

    生活中有这么一种现象:如果你关注某些东西,它就会经常出现在你眼前,例如一个不出名的歌手的名字,一种动物的卡通形象,某个非常专业的术语,等等等等.这种现象也叫做“孕妇效应”.还有类似的一种效应叫做“视网 ...

  8. 如何有效地报告 Bug

    如何有效地报告 Bug 引言 为公众写过软件的人,大概都收到过很拙劣的bug(计算机程序代码中的错误或程序运行时的瑕疵--译者注)报告,例如: 在报告中说"不好用": 所报告内容毫 ...

  9. [PyTorch]论文pytorch复现中遇到的BUG

    目录 1. zip argument #1 must support iteration 2. torch.nn.DataParallel 3. model.state_dict() 1. zip a ...

随机推荐

  1. centos安装jdk1.7.80的rpm包

    1.jdk1.7.80的rpm的包的下载地址如下,请自己选择32位还是64位,下载完之后通过vmware的共享功能共享一个文件下,然后使用cp命令copy到linux系统中去. http://www. ...

  2. 样本稳定指数PSI

    信用评定等级划分之后需要对评级的划分做出评价,分析这样的评级划分结果是否具有实用价值,即分析样本分布的稳定程度.样本分布稳定,则信用评定等级划分结果的实用价值就高.采用样本稳定指数( PSI )检验样 ...

  3. Quectel module USB driver for linux

    The environment settings are as follows: 1. ubuntu 14.04 , linux kernel: linux-lts-xenial-4.4.0 2. m ...

  4. EL中拼接字符串的方法

    近期在项目中碰到一个需要在JSP页面中比较两String类型的值的问题,于是想当然的写了如下代码: <c:if test="${'p'+longValue=='p1'}"&g ...

  5. web基础 (一) http协议

    一.什么是web服务 浏览器与网页服务端发起的请求与回应(返回的是一堆字符串,浏览器去渲染生成页面!)都是 标准的CS模式 ---- bs模式:客户端用浏览器即可,服务端需要自己去写 http协议是建 ...

  6. springboot sybase 数据库

    依赖:(驱动) <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> <dependency&g ...

  7. eclipse模板

    文件(Files)注释标签: /** * @Title: ${file_name} * @Package ${package_name} * @Description: ${todo}(用一句话描述该 ...

  8. DataSanp App与Rest, WebBroker App的区别

    DataSanp App与Rest, WebBroker App的区别 datasnap server :选择这一项,我们得到的将是一个独立EXE的三层服务器应用程序(TCP及HTTP两种模式) To ...

  9. 没有装delphi软件则须修改程序的Uses单元,去掉QDialogs qtintf.dll

    转: 花了几天的功夫,终于完成了一个delphi调用webservice(C#)的任务,发现了好多问题,不过还是解决了,和大家分享一下.首先,就是调用时一个问题,如果你的webservice没有数据库 ...

  10. 2018.8.14-C#复习笔记总

    using System; using System.Collections.Generic; //using System.Linq; using System.Text; using System ...