How to AK ARC145
__vector__ · · 个人记录
题外话
历经 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 上贺的,我还没学证明