MG loves gold
$MG$是一個運氣爆表的男孩子,他總能從地下挖掘出埋藏着的金克拉。 地下的金克拉寶藏可以看成$n$個元素組成的序列,每一種金克拉擁有自己的顏色$C$。 $MG$每次可以用掉一把鏟子挖走連續一段,但是他不願意使用同一把鏟子挖到同一種顏色的金克拉。 $MG$作爲一個十分貪心的人,他希望可以用最少的鏟子挖走所有的金克拉。 我們規定,某一位置的土地只能被鏟子挖掘一次。 $MG$認爲這件事非常容易,不屑於用計算機解決,於是運用他高超的人類智慧開始進行計算。作爲一名旁觀者,你也想挑戰$MG$智慧,請你寫個程序,計算答案。
第一行一個整數$T$,代表數據組數($1 <=T<=10$)。 接下來,對於每組數據—— 第一行一個整數$n$,表示金克拉序列長度($1<=n<=100000$)。 接下來一行$n$個整數$C$,表示金克拉顏色($|C|<=2000000000$)。
對於每一組數據,輸出一行。 該行有一個整數,表示$MG$最少使用幾把鏟子。
2 5 1 1 2 3 -1 5 1 1 2 2 3
2 3
10萬的數據 STL操作 還有就是線性的 一遍過去 每個數字被 標記一次 清空一次(記錄起點好清空);
#include<bits/stdc++.h>
using namespace std;
set<int>ss;
int main()
{ int t,n,i,xf,sum;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
ss.clear();
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&xf);
if(i==0||ss.count(xf))
{
sum++;
ss.clear();
} ss.insert(xf);
}
printf("%d\n",sum);
}
return 0;
}