/ WOJ /

记录详情

Wrong Answer

/in/foo.cc: In function 'std::vector<long long int> Get_StringNext(std::string)':
/in/foo.cc:16:21: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |   for (int i = 1; i < s.size(); ++i) {
      |                   ~~^~~~~~~~~~
# 状态 耗时 内存占用
#1 Wrong Answer 2ms 500.0 KiB
#2 Wrong Answer 2ms 548.0 KiB
#3 Wrong Answer 2ms 480.0 KiB
#4 Wrong Answer 2ms 480.0 KiB
#5 Wrong Answer 2ms 480.0 KiB
#6 Wrong Answer 2ms 500.0 KiB
#7 Wrong Answer 2ms 532.0 KiB
#8 Wrong Answer 2ms 464.0 KiB
#9 Wrong Answer 2ms 524.0 KiB
#10 Wrong Answer 2ms 484.0 KiB

代码

#include <bits/extc++.h>
#define endl '\n'
typedef long long ll;
#define int ll
using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;

vector<int> Get_StringNext(string s) {
  if (s[0] != '\0') {
    exit(-114);
  }
  vector<int> nxt(s.size());
  nxt[0] = -1;
  int j = -1;
  for (int i = 1; i < s.size(); ++i) {
    while (j >= 0 && s[j + 1] != s[i]) {
      j = nxt[j];
    }
    nxt[i] = ++j;
  }
  return nxt;
}

void Main() {
  string s1, s2;
  cin >> s1 >> s2;
  int n = s1.size(), m = s2.size(), nm = n + m;
  string s3 = '\0' + s2 + s1;
  s1 = '\0' + s1;
  s2 = '\0' + s2;
  vector<int> nxt = Get_StringNext(s3);
  for (int i = (m << 1ll); i <= nm; ++i) {
    if (nxt[i] == m) {
      cout << i - (m << 1ll) + 1 << endl;
    }
  }
  for (int i = 1; i <= m; ++i) {
    cout << nxt[i] << ' ';
  }
  cout << endl;
}

// #define __CP_MULTI_TEST_CASES

signed main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  int t = 1;
#ifdef __CP_MULTI_TEST_CASES
  cin >> t;
#endif
  while (t--) {
    Main();
  }
  return 0;
}

信息

递交者
类型
递交
题目
P1000 云剪贴板
题目数据
下载
语言
C++
递交时间
2025-05-24 11:06:10
评测时间
2025-05-24 11:06:10
评测机
分数
0
总耗时
22ms
峰值内存
548.0 KiB