【蓝桥训练记录】第 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;
}

浙公网安备 33010602011771号