• Machine Schedule HDU1150


    有两台机器A和B以及N个需要运行的任务。每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器A需要设置为模式yi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一次。请合理为每个任务安排一台机器并合理安排顺序,使得机器重启次数尽量少。

    所以这题求的是 二分图的最小覆盖点(用最小的点 联结所有的边)

    最小覆盖点==最大匹配数

    一开始为机器状态为0  所以0无需任何代价  不需要计算在内

    #include<bits/stdc++.h>
    using namespace std;
    
    int mp[105][105];
    int used[106];
    int vis[105];//记录的是匹配情况 
    int n,m;
    bool find1(int  x)
    {
        for(int j=1;j<m;j++)//从1开始是因为0不需要计算在内
        {
            if(mp[x][j]&&!used[j])
            {
                used[j]=1;
                if(!vis[j]||find1(vis[j]))
                  {
                      vis[j]=x;
                      return true;
                  }
            }
        }
        return false;
    }
    
    
    int main()
    {
        int k,cas,x,y;
        while(scanf("%d",&n),n)
        {
            memset(mp,0,sizeof(mp));
            memset(vis,0,sizeof(vis));
            scanf("%d%d",&m,&k);
            while(k--)
            {
                scanf("%d%d%d",&cas,&x,&y);
                mp[x][y]=1;
            }
            int ans=0;
            for(int i=1;i<n;i++)
            {
                memset(used,0,sizeof(used));//每次的使用  需要清除
                if(find1(i))ans++;
            }
            printf("%d
    ",ans);
        }
    
    }
  • 相关阅读:
    linux内存不足导致java进程被kill掉
    记一次centos服务器DNS引起的网络问题
    记consul集群和spring cloud集成遇到的问题。
    记一次url未encode遇到的问题
    十六周总结
    十五周总结
    计算最长英语单词链
    大道至简阅读笔记02
    大道至简阅读笔记01
    用户体验评价之搜狗输入法
  • 原文地址:https://www.cnblogs.com/bxd123/p/10361618.html
Copyright © 2020-2023  润新知