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;
}

全部评论

相关推荐

如题如果提出了一个薪资,A不成功,会有可能被取消offer吗
爱打瞌睡的柯基:最想去你们公司 但是别家开的高一些,希望能申请高一点 不管结果如何都谢谢你
点赞 评论 收藏
分享
Bug压路:老哥看得出来你是想多展示一些项目,但好像一般最多两个就够了😂页数一般一页,多的也就2页;这些项目应该是比较同质化的,和评论区其他大佬一样,我也觉得应该展示一些最拿手的(质量>数量)😁😁😁专业技能部分也可以稍微精简一些
点赞 评论 收藏
分享
沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务