求助#3WR
  • 板块P5587 打字练习
  • 楼主ashore_
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/18 16:44
  • 上次更新2023/10/27 02:31:40
查看原帖
求助#3WR
811016
ashore_楼主2022/11/18 16:44

我是直接在31行读入开始判断的,还有什么情况没考虑吗,最后是我自己的测试用例

#include <bits/stdc++.h>
using namespace std;
#define _i i << 1
#define __i i << 1 | 1
#define cl tree[i].l
#define cr tree[i].r
#define MAX_N 100010
#define lowbit(x) (x & -x)
using ld = long double;
using ll = long long;
class fastio {
 public:
  template <class T = int>
  inline T r() noexcept {
    T x = 0, w = 1;
    char ch = 0;
    for (; !isdigit(ch); ch = getchar())
      if (ch == '-') w = -1;
    for (; isdigit(ch); ch = getchar()) x = (x << 3) + (x << 1) + (ch - '0');
    return x * w;
  }
  inline string rs() noexcept {
    string res;
    char ch = 0;
    for (ch = getchar(); ch == '0' || ch == '\n' || ch == '\r' || ch == '<';
         ch = getchar())
      ;
    for (; ch != '\n' && ch != '\r'; ch = getchar()) {
      if (ch == '<') {
        if (!res.empty()) res.pop_back();
        continue;
      }
      res.append(1, ch);
    }
    return res;
  }
  inline char rc() noexcept {
    char ch = getchar();
    for (; ch == '0' || ch == '\n' || ch == '\r'; ch = getchar())
      ;
    return ch;
  }

  template <class T = int>
  inline fastio& pt(T x) noexcept {
    static char sta[128];
    int top = 0;
    if (x < 0) x = -x, putchar('-');
    do {
      sta[top++] = x % 10, x /= 10;
    } while (x);
    while (top) putchar(sta[--top] + 48);
    return *this;
  }

  inline fastio& pts(const string s) noexcept {
    for (int i = 0; s[i] != '\0'; ++i) putchar(s[i]);
    return *this;
  }
  inline fastio& ptc(const char c) noexcept {
    putchar(c);
    return *this;
  }
  inline fastio& ln() noexcept {
    putchar('\n');
    return *this;
  }
} f;
string ans[10001];
string in[10001];
int T, n1, n2;
void solve() {
  int res = 0;
  for (int i = 1, j = 1; i < n1 && j < n2; ++i, ++j) {
    int l1 = ans[i].size(), l2 = in[j].size();
    if (l1 == 0 && l2 == 0) continue;
    if (l1 == 0) {
      --j;
      continue;
    }
    if (l2 == 0) {
      --i;
      continue;
    }
    for (int idx1 = 0, idx2 = 0; idx1 < l1 && idx2 < l2;) {
      if (ans[i][idx1] == in[j][idx2]) ++res;
      ++idx1, ++idx2;
    }
  }

  f.pt<int>(round(res / (T / 60.00)));
}
int main() {
  n1 = n2 = 0;
  while (ans[n1] != "EOF") {
    ans[++n1] = f.rs();
  }
  while (in[n2] != "EOF") {
    in[++n2] = f.rs();
  }
  T = f.r();
  solve();
  return 0;
}
/*
<<h<<w
<<<
<<<
<<<
EOF
haa<aaa<<<<<eee<<<w

EOF
12
*/
2022/11/18 16:44
加载中...