「Cfz Round 3」Circle

Luogu
IDLGP10034
Time1000ms
Memory512MB
DifficultyP5
动态规划 DP图论洛谷原创Special JudgeO2优化背包 DP素数判断,质数,筛法构造洛谷月赛链表
给定一个长度为 $n$ 的 $\tt{01}$ 串 $S$ 和一个非负整数 $l$。 我们定义,对于一个 $1\sim n$ 的排列 $t$ 和非负整数 $k$: $$f_{t,k}(i)=\begin{cases}i & k=0\\f_{t,k-1}(t_i) & k \neq 0\end{cases}$$ 你需要构造一个 $1\sim n$ 的排列 $p$,满足: - 对于任意一个不大于 $n$ 的正整数 $i$,都满足 $p_i \neq i$; - 若 $S_i$ 为 $\tt1$,则 $f_{p,l}(i)=i$(若 $S_i$ 为 $\tt0$ 则没有限制); 或报告无解。 其中,$1\sim n$ 的排列指满足所有不大于 $n$ 的正整数恰好出现一次的序列。 ## Input **本题有多组测试数据。** 第一行输入一个整数 $T$,表示测试数据组数。 接下来依次输入每组测试数据。对于每组测试数据: - 第一行输入两个整数 $n,l$。 - 第二行输入一个长度为 $n$ 的 $\tt{01}$ 串表示 $S$。 ## Output 对于每组数据,输出一行: - 若存在满足条件的排列 $p$,则输出用空格分隔的 $n$ 个整数,表示你构造的排列 $p$; - 若不存在满足条件的排列 $p$,则输出 $-1$。 **所有满足要求的输出均可通过。** [samples] ## Note #### 「样例解释 #1」 对于第 $1$ 组数据,$f_{p,3}(1)=f_{p,2}(4)=f_{p,1}(5)=f_{p,0}(1)=1$,其余数同理,所以 $p$ 为 $\{4,3,2,5,1\}$ 时满足条件。 对于第 $2$ 组数据,可以证明不存在满足条件的排列 $p$。 对于第 $3$ 组数据,$\{2,1,4,5,3\}$ 等也为满足条件的排列 $p$。 #### 「数据范围」 设 $\sum n$ 表示单个测试点中 $n$ 的和。 对于所有数据,$1 \le T \le 100$,$2 \le n \le 5\times 10^5$,$0 \le l \le 10^{18}$,$\sum n \le 5\times 10^5$,保证 $S$ 中只包含 $\tt{0}$ 和 $\tt{1}$。 **只有你通过本题的所有测试点,你才能获得本题的分数。**
Samples
Input #1
4
5 3
10011
4 5
1000
5 6
11111
9 6
011111011
Output #1
4 3 2 5 1
-1
5 4 2 3 1
3 1 2 6 4 5 9 7 8
API Response (JSON)
{
  "problem": {
    "name": "「Cfz Round 3」Circle",
    "description": {
      "content": "给定一个长度为 $n$ 的 $\\tt{01}$ 串 $S$ 和一个非负整数 $l$。 我们定义,对于一个 $1\\sim n$ 的排列 $t$ 和非负整数 $k$: $$f_{t,k}(i)=\\begin{cases}i & k=0\\\\f_{t,k-1}(t_i) & k \\neq 0\\end{cases}$$ 你需要构造一个 $1\\sim n$ 的排列 $p$,满足: - 对于任意一个不大",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1000,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P5"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP10034"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "给定一个长度为 $n$ 的 $\\tt{01}$ 串 $S$ 和一个非负整数 $l$。\n\n我们定义,对于一个 $1\\sim n$ 的排列 $t$ 和非负整数 $k$:\n\n$$f_{t,k}(i)=\\begin{cases}i & k=0\\\\f_{t,k-1}(t_i) & k \\neq 0\\end{cases}$$\n\n你需要构造一个 $1\\sim n$ 的排列 $p$,满足:\n\n- 对于任意一个不大...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments