CodeForces - 957A Tritonic Iridescence

Overlooking the captivating blend of myriads of vernal hues, Arkady the painter lays out a long, long canvas.

Arkady has a sufficiently large amount of paint of three colours: cyan, magenta, and yellow. On the one-dimensional canvas split into nconsecutive segments, each segment needs to be painted in one of the colours.

Arkady has already painted some (possibly none or all) segments and passes the paintbrush to you. You are to determine whether there are at least two ways of colouring all the unpainted segments so that no two adjacent segments are of the same colour. Two ways are considered different if and only if a segment is painted in different colours in them.

Input

The first line contains a single positive integer n (1 ≤ n ≤ 100) — the length of the canvas.

The second line contains a string s of n characters, the i-th of which is either 'C' (denoting a segment painted in cyan), 'M' (denoting one painted in magenta), 'Y' (one painted in yellow), or '?' (an unpainted one).

Output

If there are at least two different ways of painting, output "Yes"; otherwise output "No" (both without quotes).

You can print each character in any case (upper or lower).

Examples
input
Copy
5
CY??Y
output
Yes
input
Copy
5
C?C?Y
output
Yes
input
Copy
5
?CYC?
output
Yes
input
Copy
5
C??MM
output
No
input
Copy
3
MMY
output
No
Note

For the first example, there are exactly two different ways of colouring: CYCMY and CYMCY.

For the second example, there are also exactly two different ways of colouring: CMCMY and CYCMY.

For the third example, there are four ways of colouring: MCYCMMCYCYYCYCM, and YCYCY.

For the fourth example, no matter how the unpainted segments are coloured, the existing magenta segments will prevent the painting from satisfying the requirements. The similar is true for the fifth example.

题意:给你一堆颜色,留出部分或无空白:让你填问号处颜色。相邻颜色不能相同。如果有两种以上的方法填完问号输出yes,否则输出no

题解:1.问号两侧相同必yes

           2.头尾出现问号必yes

           3.问号相邻必yes

           4.问号两侧不一样必no

           5.没有问号必no(坑点44)

           6.有问号但是已知颜色中出现相邻同色必no

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[110];
    int n;
    while(scanf("%d",&n)!=EOF){
    scanf("%s",s);
    int flag=1,flag0=0;
    int sum=0;
    for(int i=0;i<n;i++)
    {
        if(s[i]=='?')
        {
            sum++;
        }
    }
    for(int i=0;i<n;i++)
    {
        if(s[i]=='?')
        {
            flag0=1;
            if(i==0){flag=1;break;}
            if(i-1>=0&&i+1<=n-1&&s[i-1]!=s[i+1]&&s[i-1]!='?'&&s[i+1]!='?')
            {
                flag=0;
                //break;
            }
            else if((i-1>=0&&s[i-1]=='?')||(i+1<=n-1&&s[i+1]=='?'))
            {
                flag=1;
                break;
            }
            else if(i-1>=0&&i+1<=n-1&&s[i-1]==s[i+1]&&s[i-1]!='?')
            {
                flag=1;break;
            }

        }
    }
    if(flag0==0)flag=0;
    for(int i=0;i<n;i++)
    {
        if(s[i]==s[i+1]&&s[i]!='?'&&s[i+1]!='?')
        {
            flag=0;
            break;
        }
    }
    if(flag)printf("Yes\n");
    else printf("No\n");}
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 15:41
已编辑
淘天 算法工程师 31.0k*16.0
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务