ABC421

比赛传送门:https://atcoder.jp/contests/abc421

评价:D 题想 10min 出结果,然后代码一直搞不出来,吹了一天空调脑袋痛死了,然后 30min 干掉 A,B,C 之后就去洗澡了。

D 超级无敌屎山大分讨论,代码估计有 100 行+,懒得改了。。。

A

简单数组题。让我们欣赏 @Herbie_ZHB 大佬在公交车上写出来的代码吧!

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=105;
int n ,x;
string y,s[N];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
	    cin>>s[i];
	}
	cin>>x>>y;
	if(s[x]==y){
	  cout<<"Yes"<<endl;
	}else{
	  cout<<"No"<<endl;
	}
	return 0;
}

B

这个 \(f(x)\) 函数直接把 \(x\) 的每一位提取出来然后倒转一下就好了,下次还填非常简单.jpg

//I LOVE Neuvillette Forever!!!111
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=211;
ll x,y,a[N];
inline ll f(ll a)
{
    ll b=0;
    while(a)
    {
        b=b*10+(a%10);
        a/=10;
    }
    return b;
}
int main()
{
    // freopen("neuvillette.in","r",stdin);
    // freopen("neuvillette.out","w",stdout);
    cin>>x>>y;
    a[1]=x,a[2]=y;
    for(int i=3;i<=10;i++) a[i]=f(a[i-1]+a[i-2]);
    cout<<a[10];
	return 0;
}

C

问题的本质就是求把一个字符串变成 ABABAB...BABABA... 所要的最小步数,然后在这两个最小步数里面取个最小值。

考虑变成 ABABAB...:该串第 \(k\) 个 B 的下标为 \(2k\)

不管 A,只考虑 B,我们让 B 跑到最终串的位置上。对于第 \(k\)\(s_i=\tt B\) 的下标 \(i\),我们要让这个 B 蹦到第 \(k\) 个位置上也就是 \(2k\) 这个位置上,需要花费 \(|2k-i|\) 的操作。变成 BABABA... 也同理。

//I LOVE Alhaitham Forever!!!111
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=-1;
int n;
ll ans1,ans2;
int main()
{
    // freopen("neuvillette.in","r",stdin);
    // freopen("neuvillette.out","w",stdout);
    cin>>n;n*=2;
    string s;
    cin>>s;
    s=" "+s;
    int idx1=1,idx2=2;
    for(int i=1;i<=n;i++)  //匹配到ABABAB,B出现的下标1,3,5,7...
    {
        if(s[i]=='B')
        {
            ans1+=abs(idx1-i);
            idx1+=2;
        }
    }
    for(int i=1;i<=n;i++)  //匹配到BABABA,B出现的下标2,4,6,8,10...
    {
        if(s[i]=='B')
        {
            ans2+=abs(idx2-i);
            idx2+=2;
        }
    }
    cout<<min(ans1,ans2);
	return 0;
}
/*
问题的本质就是把一个字符串变成ABABAB/BABABA所要的最小步数
不管A,只考虑B,让B跑到最终串的位置上
AABBBA
ABABAB

AAABBB
ABABAB
*/
posted @ 2025-08-30 23:45  wwwidk1234  阅读(132)  评论(0)    收藏  举报