AT_xmascon23_f.Failed Failure Link

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

如果字符串 tt 是字符串 ss 的 border,那么 tt 既是 ss 的前缀也是 ss 的后缀。对于长度为 nn 的字符串 ss 和满足 1≤k≤n1 \le k \le n 的整数 kk,定义 f(s,k)f(s, k) 为 ss 的长度为 kk 的前缀的 border 中,长度小于 kk 的 border 的最大长度(空字符串被认为是任何字符串的 border,因此该定义是合理的)。另外,规定 f(s,0)=−1f(s, 0) = -1。

“しろうさ”打算实现一个算法,从长度为 nn 的字符串 ss 计算出 f(s,0),f(s,1),…,f(s,n)f(s, 0), f(s, 1), \ldots, f(s, n)。但他不小心写错了。函数 Xmas 用 C++ 代码片段如下,实现的实际计算结果为整数序列 g(s,0),g(s,1),…,g(s,n)g(s, 0), g(s, 1),\ldots,g(s, n):

#include <string>
#include <vector>
std::vector<int> Xmas(std::string s) {
  int n = s.size();
  std::vector<int> g(n + 1);
  int j = g[0] = -1;
  for (int i = 0; i < n; ++i) {
    for (; j >= 0 && s[j] == s[i]; j = g[j]) {}
    g[i + 1] = ++j;
  }
  return g;
}

现在给定正整数 A,BA, B。请你从 AA 个字符 a 和 BB 个字符 b 组成的、长度为 A+BA+B 的字符串 ss 中,求出 $ \displaystyle\sum_{k=0}^{A+B} |f(s, k) - g(s, k)| $ 的最小值,以及达到最小值的一个 ss。

输入格式

输入采用如下格式,从标准输入读入。

$ A $ $ B $

输出格式

第 11 行输出 $ \displaystyle\sum_{k=0}^{A+B} |f(s, k) - g(s, k)| $ 的最小值。

第 22 行输出一个能够达到最小值的 ss。

输入输出样例

  • 输入#1

    2 1

    输出#1

    2
    aba

说明/提示

样例解释 1

f(aba,0)=−1, f(aba,1)=0, f(aba,2)=0, f(aba,3)=1f(\mathtt{aba}, 0) = -1,\, f(\mathtt{aba}, 1) = 0,\, f(\mathtt{aba}, 2) = 0,\, f(\mathtt{aba}, 3) = 1。

g(aba,0)=−1, g(aba,1)=0, g(aba,2)=1, g(aba,3)=2g(\mathtt{aba}, 0) = -1,\, g(\mathtt{aba}, 1) = 0,\, g(\mathtt{aba}, 2) = 1,\, g(\mathtt{aba}, 3) = 2。

数据范围

  • 1≤A,B≤1051 \le A, B \le 10^5。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页