【蓝桥训练记录】第 26 场 蓝桥入门赛

训练情况

赛后反思

唐完了,二分没看出来

A题

字母排序

点击查看代码
#include <iostream>
using namespace std;
int main()
{
  cout<<"aekns";
  return 0;
}

B题

统计两个字符串中 01 的数量,异或找两个不同的数字的出现次数取最小值,再求和即可

点击查看代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'

using namespace std;

void solve(){
    int n; cin>>n;
    string s,t; cin>>s>>t;
    int a = 0,b = 0,c = 0,d = 0;
    for(int i = 0;i<n;i++){
        if(s[i] == '0') a++;
        else b++;
        if(t[i] == '0') c++;
        else d++;
    }
    cout<<min(a,d)+min(b,c)<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}

C题

这题可以转化成 \(x,y\) 坐标每次一边+1,一边-1。或者单独一边+2,-2,无解的情况是 \(x,y\) 坐标绝对值和为奇数,这样总会剩下一个 \(1\),修改次数为和除以二次

点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'

using namespace std;

void solve(){
    string s; cin>>s;
    int n = s.size();
    int x = 0,y = 0;
    for(int i = 0;i<n;i++){
        if(s[i] == 'L') y--;
        else if(s[i] == 'R') y++;
        else if(s[i] == 'U') x--;
        else if(s[i] == 'D') x++;
    }
    x = abs(x);
    y = abs(y);
    if((x+y)&1){
        cout<<-1<<endl;
        return;
    }
    cout<<(x+y)/2<<endl;
}

signed main(){
    // int T; cin>>T; while(T--)
    solve();
    return 0;
}
posted @ 2025-02-10 01:06  MNNUACM_2024ZY  阅读(15)  评论(0)    收藏  举报