zoukankan      html  css  js  c++  java
  • 【codeforces 515B】Drazil and His Happy Friends

    【题目链接】:http://codeforces.com/contest/515/problem/B

    【题意】

    第i天选择第i%n个男生,第i%m个女生,让他们一起去吃饭;
    只要这一对中有一个人是开心状态,另外一个人也能变成开心状态;
    且开心之后就一直开心了;
    给你n个男生,m个女生的状态(是否开心);
    问你是否到了某一天所有人都会变的开心;

    【题解】

    那个i%n和i%m的循环肯定有循环节的;
    找到那个循环节的长度;
    每次在循环节内尝试用上述办法,看看有没有办法让某些人从不开心变为开心;
    如果可以的话;就重复这个循环节地步骤;
    直到没有一个人因为这个循环节的操作变成开心状态为止。

    【Number Of WA

    0

    【完整代码】

    #include <bits/stdc++.h>
    using namespace std;
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    #define LL long long
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    #define rep2(i,a,b) for (int i = a;i >= b;i--)
    #define mp make_pair
    #define ps push_back
    #define fi first
    #define se second
    #define rei(x) scanf("%d",&x)
    #define rel(x) scanf("%lld",&x)
    #define ref(x) scanf("%lf",&x)
    
    typedef pair<int, int> pii;
    typedef pair<LL, LL> pll;
    
    const int dx[9] = { 0,1,-1,0,0,-1,-1,1,1 };
    const int dy[9] = { 0,0,0,-1,1,-1,1,-1,1 };
    const double pi = acos(-1.0);
    const int N = 110;
    
    bool bh[N], gh[N];
    int n, m,b,g;
    bool bo[N][N];
    
    int main()
    {
        //freopen("F:\rush.txt", "r", stdin);
        rei(n), rei(m);
        rei(b);
        rep1(i, 1, b)
        {
            int x;
            rei(x);
            bh[x] = true;
        }
        rei(g);
        rep1(i, 1, g)
        {
            int x;
            rei(x);
            gh[x] = true;
        }
        int len = 0;
        for (int i = 0;; i++)
        {
            int x = i%n, y = i%m;
            if (bo[x][y])
            {
                len = i - 1;
                break;
            }
            bo[x][y] = true;
        }
        bool ok = true;
        while (ok)
        {
            ok = false;
            for (int i = 0; i <= len; i++)
            {
                int x = i%n, y = i%m;
                if (!bh[x] || !gh[y])
                {
                    if (bh[x] || gh[y])
                    {
                        bh[x] = gh[y] = true;
                        ok = true;
                    }
                }
            }
        }
        rep1(i, 0, n - 1)
            if (!bh[i])
                return puts("No"), 0;
        rep1(i, 0, m - 1)
            if (!gh[i])
                return puts("No"), 0;
        puts("Yes");
        //printf("
    %.2lf sec 
    ", (double)clock() / CLOCKS_PER_SEC);
        return 0;
    }
  • 相关阅读:
    PHP查找服务器某个目录下的文件
    CentOS添加用户,管理员权限
    centos图形化桌面安装过程
    正则表达式匹配查询
    Windows远程桌面多用户登录的问题
    VM虚拟机Android安装图形界面
    Ubuntu 根目录作用
    win7个性化不能换界面:此页面上的一个或多个设置已被系统管理员禁用,关机里的切换用户和锁定为灰色
    springboot 使用 jedis 连接 Redis 数据库
    JAVA 中 Map 与实体类相互转换的简单方法
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626470.html
Copyright © 2011-2022 走看看