2103A. Common Multiple

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void solve() {
int n;
cin >> n;

vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}

sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());

cout << a.size() << endl;
}

2103B. Binary Typewriter

交换一次至多消除两处不同 res - 2,但不可能完全消除不同,res 至少剩 1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void solve() {
int n;
cin >> n;
string s;
cin >> s;
s = '0' + s;

int res = 0;
for (int i = 0; i < n; i++) {
res += s[i] != s[i + 1];
}
if (res) {
res = max(1, res - 2);
}
res += n;

cout << res << endl;
}

2103C. Median Splits

aika_{i} \leqslant k 时置ai=1a_{i}=1,否则置 0,问题化为这个 01 串能否分成三段,每段中位数的中位数为 1。