HDU6188
题意:
给你 n 张牌,问用这些牌能组成的对子和顺子的总和最大是多少
思路:
暴力求解,如果当前这张牌能组成顺子里最后那一张,那就组成顺子,然后剩下的牌全部组成对子
代码附:
#pragma GCC optimize("Ofast","inline","-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6+10;
int a[N];
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n,x,ans;
while(cin>>n)
{
ans=0;
memset(a,0,sizeof(a));
for(int i=0; i<n; ++i)
{
cin>>x;
a[x]++;
}
for(int i=1; i<=n; ++i)
{
if(i>2&&a[i]&&a[i-1]&&a[i-2])
{
ans++;
a[i]--;
a[i-1]=a[i-2]=0;
}
ans+=a[i]/2;
a[i]%=2;
}
cout<<ans<<endl;
}
return 0;
}