码迷,mamicode.com
首页 > 其他好文 > 详细

Atcoder Beginner ABC166 F

时间:2020-05-05 21:59:15      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:back   字符串   variables   test   包含   ack   另一个   添加   turn   

Atcoder ABC166 F

Three Variables Game

题意

有一个游戏包含三个变量,分别表示为\(A\),\(B\)\(C\)。随着游戏的进行,将会有\(N\)个事件要求您做出选择。这些选项中的每一个都由一个字符串Si?表示。如果Si\(A\) || \(B\),你必须在\(A\)\(B\)上加\(1\),然后从另一个上减去1;如果Si\(A\)|| \(C\),你必须在\(A\)\(C\)上加1,然后从另一个上减去1;如果Si\(B\) || \(C\) ,你必须在\(B\)\(C\)上加1,然后从上减去1。每次选择后,\(A\)\(B\)\(C\)都不应为负。确定在这种情况下是否可以做出\(N\)个选择。如果可能的话,也给一个这样的方式来做选择。

输入

\(N\) \(A\) \(B\) \(C\)

S1 S2

:

SN

输出

输出如果在这种情况下可以做出\(N\)个选择,则打印“是”;否则,打印“否”。
另外,在前一种情况下,展示一种这样的方法来在随后的N行中进行选择。第(\(i\)+1)行应该包含变量(\(A\)\(B\)\(C\))的名称,您在第\(i\)-\(th\)选项中向其添加1。

标准答案

#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, a[3];
    cin >> n >> a[0] >> a[1] >> a[2];
    vector<string> q(n);
    for (auto &e : q)
        cin >> e;
    vector<char> result;
    for (int i = 0; i < n; ++i)
    {
        string s = q[i];
        int x = s[0] - ‘A‘;
        int y = s[1] - ‘A‘;
        if (!a[x] && !a[y])
        {
            result.clear();
            break;
        }
        if (a[x] > a[y])
        {
            --a[x];
            ++a[y];
            result.push_back(s[1]);
            continue;
        }
        if (a[x] < a[y])
        {
            ++a[x];
            --a[y];
            result.push_back(s[0]);
            continue;
        }
        if (i + 1 < n && q[i + 1].find(s[0]) != string::npos)
        {
            ++a[x];
            --a[y];
            result.push_back(s[0]);
            continue;
        }
        --a[x];
        ++a[y];
        result.push_back(s[1]);
    }
    if (result.empty())
    {
        cout << "No\n";
        return 0;
    }
    cout << "Yes\n";
    for (char c : result)
        cout << c << ‘\n‘;
}

Atcoder Beginner ABC166 F

标签:back   字符串   variables   test   包含   ack   另一个   添加   turn   

原文地址:https://www.cnblogs.com/rex-blog/p/12832913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!