CF 982A Row
2020-3-14
·
hexer

982A Row

题意看半天还WA了两发,直接写后面去了…

读一下题目要求

1.There are no neighbors adjacent to anyone seated. 领座没有人 就是指不能出现两个1连续排列的情况

2.It’s impossible to seat one more person without violating the first rule. 在不违反1的条件下不可能再安排一个座位

例如: 1001满足条件1,不可能再把一个0变成1还符合条件1 10001满足条件1,但是把第2个0换成1依旧可以符合条件1,这样子就不符合条件2

还有特殊情况 0010是可以变成1010的,1010符合两条规则 同理0100是可以变成0101的 所以,特殊情况, 第一第二是0第三个是1 和 最后两个是0倒数第三个是1是No

#include<bits/stdc++.h>
int main()
{
	int i,j,k,t;
	char num[2000];
	while(~scanf("%d",&t))
	{
		getchar();
		int cut=0;
		gets(num);
		if(t==1){
			if(num[0]=='0')
			cut=1;
		}
		else{
			for(i=1;i<t;i++){
				if(num[i]==num[i-1]&&num[i]=='1'){
					cut=1;
				}
			}
			for(i=2;i<t;i++){
				if(num[i]==num[i-1]&&num[i]==num[i-2]&&num[i]=='0'){
					cut=1;
				}
			}
			if(num[0]=='0'&&num[1]==num[0]||num[t-1]=='0'&&num[t-1]==num[t-2])
			cut=1;
		}
		if(cut==1){
			printf("No\n");
		}
		else{
			printf("Yes\n");
		}
	}
}