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分)模拟的主要内容,如果未能解决你的问题,请参考以下文章