洛谷 P5587. 打字练习
原题链接
简单
作者:
y总的小迷弟
,
2023-08-06 10:01:47
,
所有人可见
,
阅读 72
//字符串模拟,利用栈可以很好地解决,熟练掌握字符串函数也能做
#include<bits/stdc++.h>
using namespace std;
const double mod = 60.0;
int ti, ans = 0;
string a[10010], b[10010];
int main()
{
int cnt = 0, cnta = 0, cntb = 0;
while(1)
{
if(cnt == 2)
break;
string op;
getline(cin, op);
if(op == "EOF")
cnt++;
else
{
if(cnt == 0)
a[++cnta] = op;
else if(cnt == 1)
b[++cntb] = op;
}
}
cin >> ti;
for(int i = 1;i <= cnta;i++)
{
string c;
string d;
stack<char> s;
stack<char> q;
for(int j = 0;j < b[i].size();j++)
{
if(b[i][j] != '<')
s.push(b[i][j]);
else if(b[i][j] == '<')
{
if(!s.empty())
s.pop();
}
}
while(!s.empty())
{
c += s.top();
s.pop();
}
for(int j = 0;j < a[i].size();j++)
{
if(a[i][j] != '<')
q.push(a[i][j]);
else if(a[i][j] == '<')
{
if(!q.empty())
q.pop();
}
}
while(!q.empty())
{
d += q.top();
q.pop();
}
reverse(c.begin(), c.end());
reverse(d.begin(), d.end());
while(c.size() < d.size())
c += '#';
for(int j = 0;j < d.size();j++)
{
if(c[j] == d[j])
ans++;
}
}
double res = (ans * 60.0 / ti + 0.5);
cout << (int)res << endl;
return 0;
}