zoukankan      html  css  js  c++  java
  • Guardian of Decency UVALive

    老师在选择一些学生做活动时,为避免学生发生暧昧关系,就提出了四个要求。在他眼中,只要任意两个人符合这四个要求之一,就不可能发生暧昧。现在给出n个学生关于这四个要求的信息,求老师可以挑选出的最大学生数量。

    #include <iostream>
    #include <cstdio>
    #include <sstream>
    #include <cstring>
    #include <map>
    #include <set>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <cmath>
    #define rap(i, a, n) for(int i=a; i<=n; i++)
    #define MOD 2018
    #define LL long long
    #define ULL unsigned long long
    #define Pair pair<int, int>
    #define mem(a, b) memset(a, b, sizeof(a))
    #define _  ios_base::sync_with_stdio(0),cin.tie(0)
    //freopen("1.txt", "r", stdin);
    using namespace std;
    const int maxn = 1010, INF = 0x7fffffff;
    int n;
    int line[maxn][maxn], girl[maxn], used[maxn];
    
    struct node
    {
        int h;
        char s;
        string music, sports;
    }Node[maxn];
    
    bool find(int x)
    {
        for(int i=1; i<=n; i++)
        {
            if(line[x][i] && !used[i])
            {
                used[i] = 1;
                if(!girl[i] || find(girl[i]))
                {
                    girl[i] = x;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    
    int main()
    {
        int T;
        scanf("%d", &T);
        while(T--)
        {
            int res = 0;
            mem(girl, 0);
            mem(line, 0);
            scanf("%d", &n);
            rap(i, 1, n)
            {
                cin>> Node[i].h >> Node[i].s >> Node[i].music >> Node[i].sports;
            }
            rap(i, 1, n)
                rap(j, i+1, n)
                {
                    if(abs(Node[i].h - Node[j].h) <= 40 && Node[i].s != Node[j].s && Node[i].music == Node[j].music && Node[i].sports != Node[j].sports)
                    {
                        line[i][j] = line[j][i] = 1;
                    }
                }
            rap(i, 1, n)
            {
                mem(used, 0);
                if(find(i))
                    res++;
            }
    
            printf("%d
    ", n - res/2);
        }
    
    
        return 0;
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    ORA-02020 : 过多的数据库链接在使用中-Windows环境解决步骤
    <转载>c++中new一个二维数组
    C C++输出格式 <转载>仅用于个人
    *p 和p[i] 区别
    Const *ptr ptr
    C 格式化的输入输出(printf scanf)
    PP 各种快捷键
    【Java并发工具类】原子类
    【Java并发工具类】Java并发容器
    【Java并发工具类】CountDownLatch和CyclicBarrier
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9435554.html
Copyright © 2011-2022 走看看