zoukankan      html  css  js  c++  java
  • Codeforces Round #652 (Div. 2) E. DeadLee(贪心)

    题目链接:https://codeforces.com/contest/1369/problem/E

    题意

    Lee 有 $n$ 种不同种类的食物和 $m$ 个朋友,每种食物有 $w_i$ 个,每个朋友喜欢吃两种食物 $x_i, y_i$,如果一个朋友被叫去厨房时一个喜欢吃的食物也没有,他就会吃掉 Lee,否则对还有的他喜欢吃的食物一种吃掉一个,问是否存在一个叫朋友去厨房的顺序保证 Lee 不会被吃掉。

    题解

    设 $s_i$ 为第 $i$ 种食物共需要多少个,若 $w_i ge s_i$,则喜欢第 $i$ 种食物的朋友一定不会吃 Lee,最优起见,可以最后再叫他们,同时他们喜欢的另一种食物也可以省下来了。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int n, m; cin >> n >> m;
        int w[n] = {};
        for (int i = 0; i < n; i++)
            cin >> w[i];
        vector<pair<int, int>> e[n];
        int s[n] = {};
        for (int i = 0; i < m; i++) {
            int u, v; cin >> u >> v;
            --u, --v;
            e[u].emplace_back(v, i);
            e[v].emplace_back(u, i);
            ++s[u], ++s[v];
        }
        queue<int> que;
        for (int i = 0; i < n; i++)
            if (w[i] >= s[i])
                que.push(i);
        vector<int> ans;
        bool vis[m] = {};
        while (!que.empty()) {
            int u = que.front();
            que.pop(); 
            for (auto [v, i] : e[u]) {
                if (vis[i])
                    continue;
                vis[i] = 1;
                ans.push_back(i);
                if (--s[v] == w[v])
                    que.push(v);
            }
        }
        if (int(ans.size()) < m) {
            cout << "DEAD" << "
    ";
            return 0;
        }
        cout << "ALIVE" << "
    ";
        reverse(ans.begin(), ans.end());
        for (int i = 0; i < m; i++)
            cout << ans[i] + 1 << " 
    "[i == m - 1];
    }
  • 相关阅读:
    Entity SQL 初入
    ObjectQuery查询及方法
    Entity Framework 的事务 DbTransaction
    Construct Binary Tree from Preorder and Inorder Traversal
    Reverse Linked List
    Best Time to Buy and Sell Stock
    Remove Duplicates from Sorted Array II
    Reverse Integer
    Implement Stack using Queues
    C++中const限定符的应用
  • 原文地址:https://www.cnblogs.com/Kanoon/p/13189658.html
Copyright © 2011-2022 走看看