[HUSTFC 2023] 逆 KMP

Luogu
IDLGP9770
Time3000ms
Memory256MB
DifficultyP6
2023O2优化高校校赛
Walk Alone 是一个字符串大师,但是他已经对传统的字符串算法感到无聊,如 KMP 算法,所以他最近在思考逆向的 KMP。下面是他提出的问题: 给你一个长度为 $n$ 的整数序列 $a$,对于任意的整数 $i\ (1\le i\le n)$,满足 $0\le a_i<i$。你需要构造另一个整数序列 $s$,满足以下条件: - 序列 $s$ 的长度为 $n$,并且其中任意元素 $s_i$ 满足 $1\le s_i\le n$; - 对于所有的整数 $i\ (1\le i\le n)$ 和 $j\ (1\le j\le a_i)$,满足 $s_{j}=s_{i-a_i+j}$; - 满足上述条件的前提下,序列 $s$ 中出现的不同元素的数量**最多**。 当然,Walk Alone 可以很轻松地解决这道题,但他想把这道题当作对你的考验。 ## Input 第一行包含一个整数 $n\ (1\le n\le 2\cdot 10^5)$,表示序列 $a$ 的长度。 第二行包含 $n$ 个整数,其中第 $i$ 个整数定义为 $a_i\ (0\le a_i<i)$。 ## Output 输出用空格间隔的 $n$ 个整数,其中第 $i$ 个整数定义为 $s_i$。如果存在多个合法答案,请输出字典序最小的那个。 [samples]
Samples
Input #1
5
0 0 1 2 3
Output #1
1 2 1 2 1 
Input #2
11
0 0 0 0 2 1 0 0 3 0 1
Output #2
1 2 3 1 2 1 1 2 3 4 1 
API Response (JSON)
{
  "problem": {
    "name": "[HUSTFC 2023] 逆 KMP",
    "description": {
      "content": "Walk Alone 是一个字符串大师,但是他已经对传统的字符串算法感到无聊,如 KMP 算法,所以他最近在思考逆向的 KMP。下面是他提出的问题: 给你一个长度为 $n$ 的整数序列 $a$,对于任意的整数 $i\\ (1\\le i\\le n)$,满足 $0\\le a_i<i$。你需要构造另一个整数序列 $s$,满足以下条件: - 序列 $s$ 的长度为 $n$,并且其中任意元素 $s_i$ 满",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 3000,
      "memory_limit": 262144
    },
    "difficulty": {
      "LuoguStyle": "P6"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP9770"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "Walk Alone 是一个字符串大师,但是他已经对传统的字符串算法感到无聊,如 KMP 算法,所以他最近在思考逆向的 KMP。下面是他提出的问题:\n\n给你一个长度为 $n$ 的整数序列 $a$,对于任意的整数 $i\\ (1\\le i\\le n)$,满足 $0\\le a_i<i$。你需要构造另一个整数序列 $s$,满足以下条件:\n- 序列 $s$ 的长度为 $n$,并且其中任意元素 $s_i$ 满...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments