zoukankan      html  css  js  c++  java
  • SGU 218.Unstable Systems

    题意:

    有n(n<500)台机器,和500个程序。不同的程序在不同的机器上运行有着不同的不稳定度s[i][j]。求最小的最大稳定度及其方案。


    Solution:

    比较经典的二分图模型。
    建图很简单。直接将$s[i][j]$作为图的邻接矩阵。
    看到求最小的最大稳定度,想到二分答案。
    check的话,只要利用所有小于等于当前二分的$ans$的边求二分图的最大匹配。如果$ 最大匹配=n $ 那么当前解是可行的。
    十分要注意的是权值可能为负!

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    const int N = 501;
    int link[N], vis[N];
    int G[N][N],ans[N];
    int n, mid;
    bool DFS ( int x )
    {
        for ( int i = 1; i <= n; i++ )
            if ( G[x][i] <= mid && !vis[i] ) {
                vis[i] = 1;
                if ( link[i] == -1 || DFS ( link[i] ) ) {
                    link[i] = x;
                    return 1;
                }
            }
        return 0;
    }
    bool check()
    {
        int ans = 0;
        memset ( link, -1, sizeof link );
        for ( int i = 1; i <= n; i++ ) {
            memset ( vis, 0, sizeof vis );
            if ( DFS ( i ) ) ans++;
        }
        return ans == n;
    }
    int main()
    {
        scanf ( "%d", &n );
        for ( int i = 1; i <= n; ++i ) {
            for ( int j = 1; j <= n; ++j ) {
                scanf ( "%d", &G[i][j] );
            }
        }
        int l = -int(1e6), r = int ( 1e6 );
        while ( l <= r ) {
            mid = ( l + r ) >> 1;
            if ( check () ) r = mid - 1;
            else
                l = mid + 1;
        }
        printf ( "%d
    ", r + 1 );
        mid = r + 1;
        check();
        for ( int i = 1; i <= n; ++i ) {
            ans[link[i]]=i;
        }
        for ( int i = 1; i <= n; ++i ) {
            printf ( "%d %d
    ", i, ans[i] );
        }
    }
    /*
    3
    100 1 100
    100 100 1
    1 100 100
    */
    
    
  • 相关阅读:
    PHPCMS模型
    SQL 根据中文分词组件来搜索表
    初识wordpress
    session_set_save_handler
    使用Sharepoint 中Webservice得到用户列表
    鸡蛋里挑骨头PHPCMS
    Type: FileNotFoundException, Exception Message: 未能加载文件或程序集
    很实用的Jquery验证插件
    CSS link media属性
    OCS (错误代码: 01492)
  • 原文地址:https://www.cnblogs.com/keam37/p/4662622.html
Copyright © 2011-2022 走看看