zoukankan      html  css  js  c++  java
  • [CF1483A] Basic Diplomacy

    [CF1483A] Basic Diplomacy - 构造

    Description

    (n) 个朋友和 (m) 天假期,每天他会选一个朋友和他一起玩团队游戏。而每天只有特定的朋友能和他玩。如果一个朋友被选了 (leftlceildfrac{m}{2} ight ceil) 次,别的朋友就会吃醋。问是否存在一种方案使得没有朋友吃醋。

    Solution

    扫两轮,同时记录每个人的使用次数

    第一轮只定下所有只能选一个人的天

    第二轮定剩下的,每次随便找一个还有剩余使用次数的人

    如果无解,那么一定是在第一轮中超标,第二轮中不可能导致超标,因为不可能有两个人同时超标的情况出现

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    void solve()
    {
        int n, m;
        cin >> n >> m;
        vector<vector<int>> g(m + 2);
        for (int i = 1; i <= m; i++)
        {
            int siz;
            cin >> siz;
            for (int j = 0; j < siz; j++)
            {
                int x;
                cin >> x;
                g[i].push_back(x);
            }
        }
        vector<int> seq(m + 2), cnt(n + 2);
        for (int i = 1; i <= m; i++)
        {
            if (g[i].size() == 1)
            {
                seq[i] = g[i][0];
                cnt[seq[i]]++;
                if (cnt[seq[i]] > (m + 1) / 2)
                {
                    cout << "NO" << endl;
                    return;
                }
            }
        }
        for (int i = 1; i <= m; i++)
        {
            if (seq[i])
                continue;
            int now = 0;
            for (int j = 0; j < g[i].size(); j++)
            {
                now = g[i][j];
                if (cnt[now] >= (m + 1) / 2)
                    continue;
                break;
            }
            seq[i] = now;
            cnt[now]++;
        }
        cout << "YES" << endl;
        for (int i = 1; i <= m; i++)
            cout << seq[i] << " ";
        cout << endl;
    }
    
    signed main()
    {
        int t;
        cin >> t;
    
        while (t--)
        {
            solve();
        }
    }
    
  • 相关阅读:
    Beyond Compare保存快照和CRC比较相结合的方法
    如何在Beyond Compare文本比较时设置书签
    如何使用Navicat for SQLite 触发器
    Navicat Premium 中实用工具介绍
    Beyond Compare查看合并文本后相同内容的方法
    Marriage Match II HDU
    Escape HDU
    kebab HDU
    Task Schedule HDU
    网络流深入
  • 原文地址:https://www.cnblogs.com/mollnn/p/14565199.html
Copyright © 2011-2022 走看看