#P13166. [GCJ 2017 #1B] Stable Neigh-bors

    ID: 12988 远端评测题 5000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>数学2017Special JudgeGoogle Code Jam

[GCJ 2017 #1B] Stable Neigh-bors

Description

你非常幸运地拥有 NN 只独角兽。每只独角兽的鬃毛中只包含以下三种颜色中的一种或两种:红色、黄色和蓝色。鬃毛的颜色取决于它包含的具体颜色种类:

  • 只有一种颜色的鬃毛,看起来就是那种颜色。例如,只有蓝色鬃毛的鬃毛就是蓝色。
  • 同时有红色和黄色鬃毛的鬃毛看起来是橙色。
  • 同时有黄色和蓝色鬃毛的鬃毛看起来是绿色。
  • 同时有红色和蓝色鬃毛的鬃毛看起来是紫色。

你拥有 RROOYYGGBBVV 只鬃毛分别为红色、橙色、黄色、绿色、蓝色和紫色的独角兽。

你刚刚建造了一个有 NN 个马厩的圆形马圈,这些马厩首尾相连,每个马厩都与两个其他马厩相邻。你希望将每只独角兽恰好放入一个马厩中。然而,独角兽需要感到稀有和特别,因此,任何两只鬃毛中包含至少一种相同颜色的独角兽都不能相邻。例如,鬃毛为橙色的独角兽不能与鬃毛为紫色的独角兽相邻,因为它们的鬃毛都含有红色。同理,鬃毛为绿色的独角兽不能与鬃毛为黄色的独角兽相邻,因为它们的鬃毛都含有黄色。

你能否将所有独角兽都安置好?如果可以,请给出任意一种可行的安排。

Input Format

输入的第一行为测试用例数 TT。接下来有 TT 组测试数据,每组数据为一行,包含七个整数:NNRROOYYGGBBVV

Output Format

对于每组测试数据,输出一行,格式为 Case #x: y,其中 xx 为测试用例编号(从 1 开始),yyIMPOSSIBLE(如果无法安排所有独角兽),或者为一个长度为 NN 的字符串,表示独角兽在马厩中的排列顺序,从任意一个马厩开始,顺时针排列。用 R 表示红色鬃毛的独角兽,O 表示橙色,Y 表示黄色,G 表示绿色,B 表示蓝色,V 表示紫色。该排列必须满足题目描述中的所有规则。

如果存在多种可行的排列方式,你可以输出任意一种。

4
6 2 0 2 0 2 0
3 1 0 2 0 0 0
6 2 0 1 1 2 0
4 0 0 2 0 0 2
Case #1: RYBRBY
Case #2: IMPOSSIBLE
Case #3: YBRGRB
Case #4: YVYV

Hint

样例解释

注意,最后两个样例不会出现在 Small 数据集中。

对于样例 1,有多种可行答案;例如,BYBRYR 也是一种可行解。注意,BYRYRB 并不是有效答案,因为马厩是环形的,第一个和最后一个马厩也是相邻的!

对于样例 2,只有三个马厩,每个马厩都与其他两个相邻,因此两只黄色鬃毛的独角兽必须相邻,这是不允许的。

对于样例 3,注意如果按照 Google logo 的颜色顺序(BRYBGR)排列独角兽,并不是有效答案,因为蓝色鬃毛的独角兽会与绿色鬃毛的独角兽相邻,而它们的鬃毛都含有蓝色。

对于样例 4,不能有两只黄色鬃毛的独角兽相邻,也不能有两只紫色鬃毛的独角兽相邻。

数据范围

  • 1T1001 \leq T \leq 100
  • 3N10003 \leq N \leq 1000
  • R+O+Y+G+B+V=NR + O + Y + G + B + V = N
  • 对于每个 Z{R,O,Y,G,B,V}Z \in \{R, O, Y, G, B, V\}0Z0 \leq Z

Small 数据集(测试集 1 - 可见)

  • O=G=V=0O = G = V = 0。(每只独角兽的鬃毛只包含一种颜色。)

Large 数据集(测试集 2 - 隐藏)

  • 除一般限制外无其他限制。(每只独角兽的鬃毛可能包含一种或两种颜色。)

由 ChatGPT 4.1 翻译