• hoj 3008 Matryoshka Dolls Again 最大独立子集


    /*

     

    题目:

           当一个洋娃娃的长宽高都比另一个大时,小的那个可以被套进去,问在最外面的洋娃娃的

           最小个数

     

    分析:

           求最大独立集,用娃娃总数-最大匹配即可,用两层循环先建图,每当娃娃i长宽高都比j小时,

           g[i][j] = true建图即可,开始时我竟然先对它进行排序,后来才发现是不用的。。。直接

           两层循环再比较即可建图。求最大匹配就是纯粹的hungy算法

     

    */

    #include <iostream>

    #include <cstring>

    #include <cstdio>

    using namespace std;

    #define X 502

    int xm[X],ym[X],n,m;

    bool g[X][X],use[X];

    struct node

    {

           int a,b,c;

    }p[X];

    bool dfs(int u)

    {

           for(int v=1;v<=n;v++)

                  if(g[u][v]&&!use[v])

                  {

                         use[v] = true;

                         if(ym[v]==-1||dfs(ym[v]))

                         {

                                xm[u] = v;

                                ym[v] = u;

                                return true;

                         }

                  }

                  return false;

    }

    int hungry()

    {

           memset(xm,-1,sizeof(xm));

           memset(ym,-1,sizeof(ym));

           int ret = 0;

           for(int u=1;u<=n;u++)

                  if(xm[u]==-1)

                  {

                         memset(use,false,sizeof(use));

                         if(dfs(u))

                                ret++;

                  }

                  return ret;

    }

    int main()

    {

           freopen("sum.in","r",stdin);

           freopen("sum.out","w",stdout);

           while(cin>>n,n)

           {

                  for(int i=1;i<=n;i++)

                         scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);

                  memset(g,false,sizeof(g));

                  for(int i=1;i<=n;i++)  //建图

                         for(int j=1;j<=n;j++)

                                if(i!=j&&p[j].a>p[i].a&&p[j].b>p[i].b&&p[j].c>p[i].c)//当三者均满足时

                                       g[j][i] = true;

                  printf("%d\n",n-hungry());

           }

     

           return 0;

    }

  • 相关阅读:
    陶哲轩实分析习题8.5.11
    强数学归纳法
    良序集的一节
    陶哲轩实分析习题8.5.12
    陶哲轩实分析习题8.5.12
    陶哲轩实分析习题8.5.11
    阿蒂亚谈数学——我对《数学的统一性》的笔记
    良序集的势的三歧性
    良序集的一节
    云上远程运维的最后那点担心,“云梯”帮你解决
  • 原文地址:https://www.cnblogs.com/yejinru/p/2436088.html
Copyright © 2020-2023  润新知