问题描述
小 H 有个长度为 N 的数列,每个位置的数值为Ai,现在她要进行 M 次操作,操作分为两种,第一种操作是将数列中所有的 x 替换为 y,第二种操作时是计算数列被划分成了多少段(段的定义为是数列中的连续区间且数值相同)
emmmm,偷鸡过去,学习记录,,,,
#include <iostream>
#include <vector>
using namespace std;
const int N = 1e5 + 5;
vector<int>v;
int A[N];
int main(){
int n,m;
cin >> n >> m;
int las = 0;
int seg = 0;
for(int i = 1; i <= n; i++){
int x;
cin >> x;
if(las == x)
continue;
las = x;
v.push_back(x);
}
while(m--){
int op;
cin >> op;
if(op == 1){
int x, y;
cin >> x >> y;
int las = 0;
for(int i = 0; i < v.size(); i++){
if(v[i] == x)
v[i] = y;
}
vector<int> aux;
bool modi = false;
for(int i = 0; i < v.size(); i++){
if(v[i] == las)
continue;
las = v[i];
aux.push_back(v[i]);
}
v = aux;
}else{
cout << v.size() << '\n';
}
}
return 0;
}