2017广西邀请赛 G Duizi and Shunzi(贪心)
2017-09-13 11:27
483 查看
题目链接:Duizi and Shunzi
题意:问给出一组数,求max(对子数+顺子数)。约定,每个数只能用一次,对子长度为2,顺子长度为3。如22是一对对子,123是一对顺子。
思路:很容易想到一个思路,对子长度比顺子长度短,优先组合成对子。看1123这个序列,11对子或者123顺子,优先组合对子(反正对子顺子1比1的关系,后面存在未知,先把前面的合并起来);看1223这个序列,22对子或者123顺子,优先组合对子(道理同样的);但是,看1233这个序列例外,应该优先组合顺子,若组合对子33剩下12,若组合顺子123剩下3,假如1233后面有45的话3就发挥作用了。所以具体实现请看代码:
题意:问给出一组数,求max(对子数+顺子数)。约定,每个数只能用一次,对子长度为2,顺子长度为3。如22是一对对子,123是一对顺子。
思路:很容易想到一个思路,对子长度比顺子长度短,优先组合成对子。看1123这个序列,11对子或者123顺子,优先组合对子(反正对子顺子1比1的关系,后面存在未知,先把前面的合并起来);看1223这个序列,22对子或者123顺子,优先组合对子(道理同样的);但是,看1233这个序列例外,应该优先组合顺子,若组合对子33剩下12,若组合顺子123剩下3,假如1233后面有45的话3就发挥作用了。所以具体实现请看代码:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<stack> #include<vector> #include<cmath> #include<map> #include<set> #include<cstdlib> #define mem(a,b) memset(a,b,sizeof(a)) typedef long long ll; using namespace std; const int maxn = 1e6+10; int t; int num[maxn]; int main(){ ll n; while(~scanf("%lld",&n)){ mem(num,0); for(int i = 0 ; i < n; i++){ scanf("%d",&t); 4000 num[t]++; } int ans = 0; for(int i = 1; i <= n; i++){ ans += num[i]/2; num[i] %= 2; if(i <= n-2){ if(num[i] == 1 && num[i+1]%2 == 1 && num[i+2]){ ans++; num[i]--; num[i+1]--; num[i+2]--; } } } printf("%d\n",ans); } return 0; }
相关文章推荐
- 【2017广西邀请赛】hdu 6188 Duizi and Shunzi 贪心
- 2017广西邀请赛 Duizi and Shunzi(贪心+DP)
- 2017广西邀请赛/hdu - 6188 Duizi and Shunzi(贪心)
- 广西 2017 邀请赛 Duizi and Shunzi
- 2017ACM/ICPC广西邀请赛 Duizi and Shunzi
- 【每日一题(9)】Duizi and Shunzi HDU - 6188 2017ACM/ICPC广西邀请赛
- HDU 6188 && 2017广西邀请赛:Duizi and Shunzi
- 2017ACM/ICPC广西邀请赛-重现赛 1007.Duizi and Shunzi
- HDU-6188-Duizi and Shunzi(广州邀请赛G题)(简单贪心)
- HDU 6188 Duizi and Shunzi(贪心+细节)
- HDU 6188 Duizi and Shunzi 贪心
- HDU6188 | 2017广西邀请赛 Duizi and Shunzi (贪心)
- HDU 6188 Duizi and Shunzi(贪心)
- HDU 6188 Duizi and Shunzi 贪心
- hdu 6188 Duizi and Shunzi(贪心)
- 【hdu6188】Duizi and Shunzi(贪心)
- 【贪心】hdu - 6188 Duizi and Shunzi
- HDU 6188 Duizi and Shunzi(贪心)
- 2017广西邀请赛 Query on A Tree (可持续化字典树)
- 2017广西邀请赛 D题Covering (递推+矩阵快速幂)