【MX-J2-T1】Turtle and Sequences
题目描述
给你一个序列 a_1, a_2, \ldots, a_n。你可以对这个序列进行若干次操作。
设一次操作前序列长度为 m,那么这次操作你可以选择一个整数 i 使得 1 \le i \le m - 1 且 a_i \ne a_{i + 1},删除 a_{i + 1} 并把 a_i 的值设成任意整数。
求你最多能进行多少次操作。
输入格式
第一行包含一个正整数 n,表示序列的初始长度。
第二行包含 n 个正整数 a_1, a_2, \ldots, a_n。
输出格式
一行一个非负整数,表示最多能进行的操作次数。
样例 #1
样例输入 #1
2
1 2
样例输出 #1
1
样例 #2
样例输入 #2
3
1 1 1
样例输出 #2
0
样例 #3
样例输入 #3
4
1 1 45 14
样例输出 #3
3
提示
【样例解释 #1】
可以选择 i = 1,删除 a_2 后把 a_1 的值设成 3。此时 a = [3],无法再进行任何操作。所以答案是 1。
【样例解释 #2】
无法进行任何操作,所以答案是 0。
【数据范围】
本题采用捆绑测试且开启子任务依赖。
| 子任务编号 | 分值 | n \le | 特殊性质 | 子任务依赖 |
|---|---|---|---|---|
| 1 | 34 | 2 | 无 | 无 |
| 2 | 19 | 10^5 | a_1 = a_2 = \cdots = a_n | 无 |
| 3 | 47 | 10^5 | 无 | 1, 2 |
对于所有数据,满足 1 \le n \le 10^5,1 \le a_i \le 10^9。
53分代码:
#include <iostream>
using namespace std;
int n, cnt, p, c;
int main() {
cin >> n;
cin >> p;
for (int i = 1; i < n; i++) {
cin >> c;
if (c != p) {
cnt++;
}
p = c;
}
cout << cnt;
return 0;
}