昨晚 cf C 的一个程序的时间复杂度分析求助
  • 板块学术版
  • 楼主Zhang_Wenjie
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/6/30 22:34
  • 上次更新2023/11/3 12:01:27
查看原帖
昨晚 cf C 的一个程序的时间复杂度分析求助
481621
Zhang_Wenjie楼主2023/6/30 22:34

link

code by A_G

请问 for (int j = pos+1; j < n; j++)的时间复杂度怎么分析?

#include <bits/stdc++.h>
using namespace std;

int main () {
  ios_base::sync_with_stdio(0); cin.tie(0);
  int T;
  cin >> T;
  while (T--) {
    string s, l, r;
    int m;
    cin >> s >> m >> l >> r;
    int n = s.size();
    int pos = -1;
    for (int i = 0; i < m; i++) {
      int best = pos;
      for (char c = l[i]; c <= r[i]; c++) {
        int z = n;
        for (int j = pos+1; j < n; j++) {
          if (s[j] == c) {
            z = j;
            break;
          }
        }
        best = max(best, z);
      }
      pos = best;
    }
    cout << (pos == n ? "YES" : "NO") << '\n';
  }
}

2023/6/30 22:34
加载中...