训练情况
赛后反思
唐完了,二分没看出来
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;
}