AtCoder Regular Contest 069 D
2017-02-20 15:47
525 查看
D - Menagerie
Time limit : 2sec / Memory limit : 256MB
Score : 500 points
Problem Statement
Snuke, who loves animals, built a zoo.
There are N animals in this zoo. They are conveniently numbered 1 through N, and arranged in a circle. The animal numbered i(2≤i≤N−1) is adjacent to the animals numbered i−1 and i+1. Also, the animal numbered 1 is adjacent to the animals numbered 2 and N, and the animal numbered N is adjacent to the animals numbered N−1 and 1.
There are two kinds of animals in this zoo: honest sheep that only speak the truth, and lying wolves that only tell lies.
Snuke cannot tell the difference between these two species, and asked each animal the following question: “Are your neighbors of the same species?” The animal numbered i answered si. Here, if si is o, the animal said that the two neighboring animals are of the same species, and if si is x, the animal said that the two neighboring animals are of different species.
More formally, a sheep answered o if the two neighboring animals are both sheep or both wolves, and answered x otherwise. Similarly, a wolf answered x if the two neighboring animals are both sheep or both wolves, and answered o otherwise.
Snuke is wondering whether there is a valid assignment of species to the animals that is consistent with these responses. If there is such an assignment, show one such assignment. Otherwise, print -1.
Constraints
3≤N≤105
s is a string of length N consisting of o and x.
Input
The input is given from Standard Input in the following format:
N
s
Output
If there does not exist an valid assignment that is consistent with s, print -1. Otherwise, print an string t in the following format. The output is considered correct if the assignment described by t is consistent with s.
t is a string of length N consisting of S and W.
If ti is S, it indicates that the animal numbered i is a sheep. If ti is W, it indicates that the animal numbered i is a wolf.
Sample Input 1
Copy
6
ooxoox
Sample Output 1
Copy
SSSWWS
For example, if the animals numbered 1, 2, 3, 4, 5 and 6 are respectively a sheep, sheep, sheep, wolf, wolf, and sheep, it is consistent with their responses. Besides, there is another valid assignment of species: a wolf, sheep, wolf, sheep, wolf and wolf.
Let us remind you: if the neiboring animals are of the same species, a sheep answers o and a wolf answers x. If the neiboring animals are of different species, a sheep answers x and a wolf answers o.
b34c052fc21c42d2def9b98d6dccd05c.png
Sample Input 2
Copy
3
oox
Sample Output 2
Copy
-1
Print -1 if there is no valid assignment of species.
Sample Input 3
Copy
10
oxooxoxoox
Sample Output 3
Copy
SSWWSSSWWS
大型模拟
Time limit : 2sec / Memory limit : 256MB
Score : 500 points
Problem Statement
Snuke, who loves animals, built a zoo.
There are N animals in this zoo. They are conveniently numbered 1 through N, and arranged in a circle. The animal numbered i(2≤i≤N−1) is adjacent to the animals numbered i−1 and i+1. Also, the animal numbered 1 is adjacent to the animals numbered 2 and N, and the animal numbered N is adjacent to the animals numbered N−1 and 1.
There are two kinds of animals in this zoo: honest sheep that only speak the truth, and lying wolves that only tell lies.
Snuke cannot tell the difference between these two species, and asked each animal the following question: “Are your neighbors of the same species?” The animal numbered i answered si. Here, if si is o, the animal said that the two neighboring animals are of the same species, and if si is x, the animal said that the two neighboring animals are of different species.
More formally, a sheep answered o if the two neighboring animals are both sheep or both wolves, and answered x otherwise. Similarly, a wolf answered x if the two neighboring animals are both sheep or both wolves, and answered o otherwise.
Snuke is wondering whether there is a valid assignment of species to the animals that is consistent with these responses. If there is such an assignment, show one such assignment. Otherwise, print -1.
Constraints
3≤N≤105
s is a string of length N consisting of o and x.
Input
The input is given from Standard Input in the following format:
N
s
Output
If there does not exist an valid assignment that is consistent with s, print -1. Otherwise, print an string t in the following format. The output is considered correct if the assignment described by t is consistent with s.
t is a string of length N consisting of S and W.
If ti is S, it indicates that the animal numbered i is a sheep. If ti is W, it indicates that the animal numbered i is a wolf.
Sample Input 1
Copy
6
ooxoox
Sample Output 1
Copy
SSSWWS
For example, if the animals numbered 1, 2, 3, 4, 5 and 6 are respectively a sheep, sheep, sheep, wolf, wolf, and sheep, it is consistent with their responses. Besides, there is another valid assignment of species: a wolf, sheep, wolf, sheep, wolf and wolf.
Let us remind you: if the neiboring animals are of the same species, a sheep answers o and a wolf answers x. If the neiboring animals are of different species, a sheep answers x and a wolf answers o.
b34c052fc21c42d2def9b98d6dccd05c.png
Sample Input 2
Copy
3
oox
Sample Output 2
Copy
-1
Print -1 if there is no valid assignment of species.
Sample Input 3
Copy
10
oxooxoxoox
Sample Output 3
Copy
SSWWSSSWWS
大型模拟
#include <bits/stdc++.h> using namespace std; const int N=123456; int gh(char *str,char *ch,int n) { for(int i=1; i<n; i++) { if(i<n-2) { if(str[i]=='o') { if(ch[i]=='S') { ch[i+1]=ch[i-1]; } else { if(ch[i-1]=='S') ch[i+1]='W'; else ch[i+1]='S'; } } else { if(ch[i]=='S') { if(ch[i-1]=='S') ch[i+1]='W'; else ch[i+1]='S'; } else { ch[i+1]=ch[i-1]; } } } else if(i==n-2) { if(str[i]=='o') { if(ch[i]=='S') { if(ch[i+1]!=ch[i-1]) { return 1; } } else { if(ch[i+1]==ch[i-1]){ return 1; } } } else{ if(ch[i]=='S'){ if(ch[i+1]==ch[i-1]){ return 1; } } else{ if(ch[i+1]!=ch[i-1]) { return 1; } } } } else if(i==n-1){ if(str[i]=='x'){ if(ch[i]=='S') { if(ch[n-2]==ch[0]) return 1; } else{ if(ch[n-2]!=ch[0]) return 1; } } else{ if(ch[i]=='S'){ if(ch[n-2]!=ch[0]) return 1; } else{ if(ch[n-2]==ch[0]) return 1; } } } } return 0; } int main() { char str ; char ch ; int n; int flag=0; scanf("%d",&n); scanf("%s",str); ch[0]='S'; if(str[0]=='o') { memset(ch,0,sizeof(ch)); ch[0]='S'; ch[1]='S'; ch[n-1]='S'; flag=gh(str,ch,n); if(flag==0) { for(int i=0; i<n; i++) printf("%c",ch[i]); puts(""); return 0; } else { memset(ch,0,sizeof(ch)); ch[0]='S'; ch[1]='W'; ch[n-1]='W'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); return 0; } } } else{ memset(ch,0,sizeof(ch)); ch[0]='S'; ch[1]='S'; ch[n-1]='W'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); return 0; } else{ memset(ch,0,sizeof(ch)); ch[0]='S'; ch[1]='W'; ch[n-1]='S'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); return 0; } } } ch[0]='W'; if(str[0]=='o'){ memset(ch,0,sizeof(ch)); ch[0]='W'; ch[1]='S'; ch[n-1]='W'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); return 0; } else{ ch[0]='W'; ch[1]='W'; ch[n-1]='S'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); return 0; } } } else{ memset(ch,0,sizeof(ch)); ch[0]='W'; ch[1]='S'; ch[n-1]='S'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); } else{ ch[0]='W'; ch[1]='W'; ch[n-1]='W'; flag=gh(str,ch,n); if(flag==0){ for(int i=0;i<n;i++) printf("%c",ch[i]); puts(""); return 0; } } } puts("-1"); return 0; }
相关文章推荐
- AtCoder Regular Contest 069 F - Flags 2-SAT+线段树优化建图
- 【2-SAT】【优化连边】【AtCoder Regular Contest 069 F】Flag
- AtCoder Regular Contest 069 D - Menagerie 枚举起点 递推
- AtCoder Regular Contest 069 D
- AtCoder Regular Contest 061 DSnuke's Coloring
- AtCoder Regular Contest 086 E - Smuggling Marbles(树形迭屁)
- AtCoder Regular Contest 077 E - guruguru
- AtCoder Regular Contest 090 D People on a Line
- AtCoder Regular Contest 089 D - Checker 思维题、点的转移、二维前缀和
- AtCoder Regular Contest 092 B Two Sequences
- 【搜索】[AtCoder Regular Contest 092 F]Two Faced Edges
- AtCoder Regular Contest 093 D - Grid Components
- *AtCoder Regular Contest 094 F - Normalization
- AtCoder Regular Contest 097
- 从AtCoder Regular Contest 077D: 11 中学习逆元的线性求法
- AtCoder Regular Contest 077 E - guruguru
- AtCoder Regular Contest 078
- 【构造】AtCoder Regular Contest 079 F - Namori Grundy
- AtCoder Regular Contest 080 D - Grid Coloring
- AtCoder Regular Contest 080-D - Grid Coloring