考验-贪心

题目:

https://www.luogu.com.cn/problem/P1684

例子举例:

输入:

2 3 3 4 5 3 2

输出:

 

思路:

1.这个数出现次数为4

2.出现超过两对的数的次数大于两次

(ps:记得清空map)

#include<stdio.h>
#include<map>
using namespace std;
int a[4007];
int main()
{
    int n;
  scanf("%d",&n);
  for(int i=1;i<=n;i++)
    scanf("%d",&a[i]);
  map<int,int> ma;
  int ans=0;
  int pos=1;
  for(int i=1;i<=n;i++)
  {
     ma[a[i]]++;

     if(ma[a[i]]==4)
     {
         ans++;
         for(int k=1;k<=i;k++)
            ma[a[k]]=0;
         pos=i+1;
     }
     if(ma[a[i]]==2)
     {
         int res=0;
         for(int j=pos;j<=i;j++)
         {
             if(ma[a[j]]>=2)
             {
                 res++;
             }
         }
         if(res>=4)
         {
             ans++;
             for(int k=1;k<=i;k++)

                 ma[a[k]]=0;
          pos=i+1;
         }
     }
  }
    printf("%d\n",ans);
}

 

posted @ 2021-07-12 17:26  废柴废柴少女  阅读(38)  评论(0)    收藏  举报