atcoder#APC001G. Colorful Doors
Colorful Doors
题目描述
左岸と右岸を繋ぐ橋があります。 橋の上の相異なる 箇所には、それぞれある色のドアが置かれています。 各ドアの色は から までの整数で表されます。 各 () について、色 のドアはちょうど 個存在します。
すぬけ君は、左岸から右岸へ橋を渡ることにしました。 すぬけ君は常に右へ向かって歩き続けますが、その間に次の現象が起こります。
- すぬけ君が色 () のドアに触れた瞬間、すぬけ君は色 の他方のドアのすぐ右へワープする。
すぬけ君はいずれ右岸に辿り着くことが示せます。
各 () について、左から 番目および 番目のドアに挟まれた区間を、区間 と呼ぶことにします。 橋を渡り終えたすぬけ君は、各 () について、区間 を歩いたか否かを記録しました。 この記録が、長さ の文字列 として与えられます。 各 () について、すぬけ君が区間 を歩いたならば、 の 文字目は 1
であり、そうでないならば、 の 文字目は 0
です。
図: 入力例 3 に対応するドアの配置の例
記録に矛盾しないようなドアの配置が存在するか判定し、存在するならばひとつ構成してください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
記録に矛盾しないようなドアの配置が存在しないならば、No
を出力せよ。 存在するならば、 行目に Yes
を出力し、 行目にドアの配置をひとつ次のフォーマットで出力せよ。 ただし、各 () について、 は左から 番目のドアの色である。
题目大意
有 对传送门将一条路径划分为 段。
你从路径最左端开始一直向右走。当你从左侧到达一个传送门时,你会被立刻传送到和此传送门配对的传送门右侧。可以证明,不管传送门如何配对,你总是能到达路径尽头。
现在给定一个 串表示每一段路是否被你经过过,请你构造出一种合法的配对方案或是指出这个 串是错误的。
显然你一定会经过第一段和最后一段,所以输入的 串只有 位。
2
010
Yes
1 1 2 2
2
001
No
3
10110
Yes
1 3 2 1 2 3
3
10101
No
6
00111011100
Yes
1 6 1 2 3 4 4 2 3 5 6 5
提示
制約
- は
0
と1
のみからなる。
Sample Explanation 3
以下の図は問題文中のものと同様です。 ![](https://img.atcoder.jp/cookie/970b981380ffad7745008433034c0885.png)