CCF201903-4 消息传递接口(100分)模拟

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF201903-4 消息传递接口(100分)模拟相关的知识,希望对你有一定的参考价值。

试题编号: 201903-4
试题名称: 消息传递接口
时间限制: 1.0s
内存限制: 512.0MB


问题链接CCF201903-4 消息传递接口
问题简述:(略)
问题分析:模拟题,比较费时间。相比较于C++的输入流实现,也许输入处理用基于字符的文本处理速度上会略为快一些。
程序说明:比起语句“cout << 1 << endl;”,用语句“cout << ‘1’ << endl;”要略好一些。想一下该语句最终是怎么实现的,函数itoa()怎么实现?如何输出整数?就明白了。
参考链接:(略)
题记:(略)

100分的C++语言程序如下:

/* CCF201903-4 	消息传递接口 */

#include <bits/stdc++.h>

using namespace std;

const int N = 10000;
struct Node {
    char kind;
    int num;
};
queue<Node> q[N];

int main()
{
    int t, n;
    string line;
    cin >> t >> n;
    getline(cin, line);
    while (t--) {
        for (int i = 0; i < n; i++) {
            while (!q[i].empty()) q[i].pop();

            getline(cin, line);
            istringstream ss(line);
            while (getline(ss, line, ' '))
                if (line.size())
                    q[i].push(Node{line[0], atoi(&line[1])});
        }

        bool flag;
        for (; ;) {
            flag = true;
            for (int i = 0; i < n; i++) {
                if (!q[i].empty()) {
                    Node cur = q[i].front();
                    if (q[cur.num].empty()) break;
                    Node next = q[cur.num].front();
                    if (cur.kind == 'S' && next.kind == 'R' && next.num == i) {
                        q[i].pop();
                        q[cur.num].pop();
                        flag = false;
                        i--;
                    }
                }
            }
            if (flag) break;
        }

        flag = true;
        for (int i = 0; i < n; i++) {
            if (q[i].size()) {
                cout << '1' << endl;
                flag = false;
                break;
            }
        }
        if (flag) cout << '0' << endl;
    }

    return 0;
}

以上是关于CCF201903-4 消息传递接口(100分)模拟的主要内容,如果未能解决你的问题,请参考以下文章

201903-4 消息传递接口 (80')

201903-4 消息传递接口

ccf 201903-4

CCF201709-4 通信网络(100分)DFS+BFS

CCF认证历年试题

CCF201912-1 报数(100分)模拟