QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#682107 | #7894. Many Many Heads | mvec | RE | 0ms | 0kb | C++14 | 1.7kb | 2024-10-27 13:57:20 | 2024-10-27 13:57:21 |
answer
#include <iostream>
#include <string>
#include <bitset>
#include <stack>
using namespace std;
struct seq
{
int l, r, t;
};
bitset<1000010> bin_s;
seq seqs[500010];
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
string s;
cin >> s;
n = s.size();
for (int i = 0; i < n; i++)
{
if (s[i] == '(' || s[i] == ')')
bin_s[i] = 0;
else
bin_s[i] = 1;
}
stack<char> ord;
int index = 0;
for (int i = 0; i < n; i++)
{
if (bin_s[i])
{
if (ord.size() && ord.top() == '[')
ord.pop();
else
ord.push('[');
if (ord.empty())
{
seqs[index].r = i;
seqs[index++].t = 1;
}
}
else
{
if (ord.size() && ord.top() == '(')
ord.pop();
else
ord.push('(');
if (ord.empty())
{
seqs[index].r = i;
seqs[index++].t = 0;
}
}
}
seqs[0].l = 0;
for (int i = 1; i < index; i++)
seqs[i].l = seqs[i - 1].r + 1;
int cnts[2] = {0, 0};
for (int i = 0; i < index; i++)
cnts[seqs[i].t]++;
if (cnts[0] > 1 || cnts[1] > 1)
cout << "No\n";
else
cout << "Yes\n";
}
system("pause");
return 0;
}
详细
Test #1:
score: 0
Dangerous Syscalls
input:
6 )) ((() [()] ()[()]() ([()]) ([])([])
output:
Yes No Yes No Yes