求助QwQ
查看原帖
求助QwQ
984056
pppwolf楼主2023/7/23 22:29

用的二分,测试了很多数据都可以,洛谷上只过了一个,求求指点指点哪错了。。

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1000010;

string a, s[N], ans[N], q[N];
int t, cnt, len;

int main()
{
  cin >> a;
  for (int i = 0; i < a.size(); i++)
  {
    if (isupper(a[i]))
      s[++cnt] = a[i];
    else
      s[cnt] += a[i];
  }

  for (int i = 1; i <= cnt; i++)
  {
    int l = 0, r = len;
    while (l < r)
    {
      int mid = l + r + 1 >> 1;
      if (ans[mid].compare(s[i]) < 0)
        l = mid;
      else
        r = mid - 1;
    }
    ans[r + 1] = s[i];
    if (len < r + 1)
    {
      len = r + 1;
      q[t++] = ans[len - 1];
    }
  }
  q[t] = ans[len];

  for (int i = 1; i <= t; i++)
  {
    cout << q[i];
  }
  return 0;
}

求错误的数据~

2023/7/23 22:29
加载中...