hdu 6019

题意:MG是一个运气爆表的男孩子,他总能从地下挖掘出埋藏着的金克拉。 地下的金克拉宝藏可以看成n个元素组成的序列,每一种金克拉拥有自己的颜色C。 MG每次可以用掉一把铲子挖走连续一段,但是他不愿意使用同一把铲子挖到同一种颜色的金克拉。 MG作为一个十分贪心的人,他希望可以用最少的铲子挖走所有的金克拉。 我们规定,某一位置的土地只能被铲子挖掘一次。

思路:貌似for一遍就可以了,用map打个标记,之前有的颜色,就++,清空。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 map<ll ,int >a;
 5 int main(){
 6     int t;
 7     scanf("%d",&t);
 8     while(t--){
 9         a.clear();
10         int n;
11         scanf("%d",&n);
12         ll x,sum=0;
13         for(int i=1;i<=n;i++){
14             scanf("%lld",&x);
15             if(a[x]==1){
16                 sum++;a.clear();
17             }
18             a[x]++;
19         }
20         if(a.size()>0) sum++;
21         cout<<sum<<endl;
22     }
23 }
原文地址:https://www.cnblogs.com/hhxj/p/6953476.html