Practice. A. Make A Equal to B 题意 给定两个长度为 \(n\) 的二进制序列 \(a, b\),定义操作如下: 选择任意 \(i\),将 \(a_i\) 改为 \(1 - a_i\); 任意排序 \(a\) 输出操作数的最小值。 思路 很显然,我们直接统计两个序列中 \(0, 1\) 的个数,然后在 将 \(0\) 的个数变为一致需要的操作数 和 将 \(1\) 的个数变为一致需要的操作数 中取最小值即可。此时,答案为最小操作数 \(+ 1\)。 当然,如果只需改一次,我们就不用排序了,所以我们顺便计算一下按原顺序排列的情况下有多少数不一样,最后和答案取最小值即可。 时间复杂度:\(O(n)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int ...
Contestant. Rank 1888. Rating +1. 查重后刚好加了一分(跟白打没区别 A. Li Hua and Maze 题意 给定一个 \(n \times m\) 的矩阵以及两个点 \((x_1, y_1), (x_2, y_2)\)。其中,两点满足 \(|x_1-x_2|+|y_1-y_2|\geq 2\)。在矩阵中插入若干个障碍,使得两点不连通。 输出需要插入的最少障碍数。 思路 很显然,我们把起点或者终点包起来即可。 不要写错就是 \(win\)。 时间复杂度:\(O(1)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f, mod = 1e9 + 7; void init() ...
Practice. A. Compare T-Shirt Sizes 题意 比较 \(T\) 恤的尺码。 其中,\(XXL > XL, XXS < XS\)。 思路 我们记 \(M = 0\),其余的按照 \(X\) 的个数计算即可。 时间复杂度:\(O(1)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f; void init(){} void solve() { string a, b; cin >> a >> b; int na = a.size(), nb = b.size(); map<char, int> mp = ...
Contestant. Rank 3437. Unrated. A. Coins 题意 给定 \(n, k\),输出是否可以找到一对整数 \(x, y\),满足 \(2 \cdot x + k \cdot y = n\)。 思路 移项可得,\(x = \frac{n - ky}{2}\)。 那么,只要分母是偶数即可。 也就是说,我们考虑 \(n, k\) 的奇偶性:当 \(n\) 为奇数,\(k\) 为偶数的时候就无法满足。 时间复杂度:\(O(1)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f, mod = 1e9 + 7; void init(){} void solve() & ...
Contestant(alt). Rank 993. Rating +168. A. Insert Digit 题意 给定一个数 \(a\),以及一个 \([0, 9]\) 的数 \(b\),将 \(b\) 插入 \(a\),输出最大的数。 思路 我们从后往前找出最后一个小于 \(b\) 的数,放在这个数前面就可以让结果最大。 当然,如果没有比它小的数,直接放在最后即可。 时间复杂度:\(O(n)\) #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f, mod = 1e9 + 7; void init(){} void solve() { int n; char d; string ...
Contestant. Rank 2150. Rating -3. A. We Need the Zero 题意 给定序列 \(a\),判断是否存在一个数 \(x\),使 \((a_1 \oplus x) \oplus (a_2 \oplus x) \oplus ... \oplus (a_n \oplus x) = 0\)。若存在,输出这个数,否则输出 \(-1\)。 思路 很显然,异或是具有交换律的,也就是说,我们不妨记 \(p = a_1 \oplus a_2 \oplus ... \oplus a_n\)。 因为两个相同的数异或值为 \(0\),所以我们只需考虑 \(n\) 的奇偶性。 如果 \(n\) 为奇数,那么我们只需让 \(x = p\),否则就需要 \(p = 0\),不然无解。 时间复杂度:\(O(n)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #d ...
Contestant(alt). 开摆Rank 5778. Rating -11(+89 -100). A. Beautiful Sequence 题意 给定一个序列,输出是否存在一个子序列,存在一个元素满足 \(a_i = i\)。 思路 显然,我们只需遍历一遍序列,找出一个 \(a_i\),满足 \(a_i \leq i\) 即可。 时间复杂度:\(O(n)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f; void init(){} void solve() { int n; cin >> n; bool f = false; for(int i= ...
Contestant. Rank WASTED. Unrated. A. Are You a Robot? 题意 给定一个图片,输出图片里的单词。 思路 如图,为"\(security\)"。 头脑复杂度:\(O(0)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f; void init(){} void solve() { cout << "security\n"; } signed main(){ ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); init(); int ...
Practice. A. Lucky Numbers 题意 此处给出 \(A\) 题和 \(C\) 题的定义: 对于一个数字,将所有位上的数取出,组成一个序列 \(a\)。定义 \(l = a_{\max} - a_{\min}\)。 那么, 给定一个区间 \([l ,r]\),\(l\) 的最大值对应的数就是最幸运数,最小值对应的数就是最不幸运数。 给定一个区间 \([l, r]\),输出任意一个最幸运数。 思路 首先,如果考虑幸运数,那么我们不难发现,我们只需关注十位和个位上的数即可,因为在这里就可以搞出最大值。 那么,暴力遍历 \([l, l + 100]\) 即可。 时间复杂度:\(O(100x)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int, int> #define fs first #define sc second const int N = 2e5 + ...