How to AK ARC145

· · 个人记录

题外话

历经 6 次罚时切掉 A 后,通过翻 OEIS.org 过 C(我很不要脸,对吧)。
反正小号是上棕了(76 --> 440)

A

做法

结论题。
考虑让右边试图匹配左边,根据题目条件,可以推出,对于所有不符合条件的位置,都可以通过牺牲后一个位置来把当前位置变得合格。

但是,最后一个位置没有位置可以替它牺牲,所以如果最后一个位置不符合条件,那么无解,No,反之,Yes

左边匹配右边和右边匹配左边都一样,所以选择较为方便的右边匹配左边。

Code

#include <bits/stdc++.h>
using namespace std;
namespace Main
{
    const int maxn=2e5+5;
    int n;
    char s[maxn];
    void main()
    {
        scanf("%d",&n);
        scanf("%s",s+1);
        if(n==2)
        {
            if(s[1]!=s[2])printf("No");
            else printf("Yes");
            return;
        }
        if((s[n]=='B'&&s[1]=='A'))printf("No");
        else printf("Yes");
    }
}
int main()
{
    Main::main();
    return 0;
}

B

做法

正在想

Code

没写

C

公式是从 oeis.org 上贺的,我还没学证明