zoukankan      html  css  js  c++  java
  • Dolls

    题意:有一些箱子,大箱子可以套小箱子,但是必须h>h,w>w,l>l,求出来最外面能剩下几个箱子无法被嵌套。
     
    分析:思考每个箱子都只会被别的箱子套一次,所以构成一二分匹配模型,只需求出来最大的匹配,因为没有匹配的都是无法被嵌套的,已经匹配的都可以找到嵌套它的箱子,结果就是箱子总数-最大匹配。
    代码如下:
    =======================================================================================================================================
    #include<stdio.h>
    #include<string.h>
    
    const int MAXN = 507;
    const int oo = 1e9+7;
    
    struct point{int wi, li, hi;}p[MAXN];
    int G[MAXN][MAXN], Ly[MAXN], N;
    bool used[MAXN];
    
    bool OK(point a, point b)
    {
        if(a.hi<b.hi && a.li<b.li && a.wi<b.wi)
            return true;
        return false;
    }
    bool Find(int i)
    {
        for(int j=1; j<=N; j++)
        {
            if(!used[j] && G[i][j])
            {
                used[j] = true;
    
                if(!Ly[j] || Find(Ly[j]))
                {
                    Ly[j] = i;
                    return true;
                }
            }
        }
    
        return false;
    }
    int XYL()
    {
        memset(Ly, 0, sizeof(Ly));
        int ans = 0;
    
        for(int i=1; i<=N; i++)
        {
            memset(used, false, sizeof(used));
            if(Find(i) == true)
                ans++;
        }
    
        return ans;
    }
    
    int main()
    {
        while(scanf("%d", &N), N)
        {
            int i, j;
    
            memset(G, 0, sizeof(G));
    
            for(i=1; i<=N; i++)
                scanf("%d%d%d", &p[i].wi, &p[i].li, &p[i].hi);
    
            for(i=1; i<=N; i++)
            for(j=1; j<=N; j++)
            {
                if(OK(p[i], p[j]) == true)
                    G[i][j] = 1;
            }
    
            printf("%d
    ", N-XYL());
        }
    
        return 0;
    }
  • 相关阅读:
    Expanding Rods(二分)
    Monthly Expense(二分)
    sdut1269 走迷宫(dfs)
    走迷宫(dfs)
    C Looooops(扩展欧几里得+模线性方程)
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
    37. Sudoku Solver
    36. Valid Sudoku
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4730611.html
Copyright © 2011-2022 走看看