Duizi and Shunzi

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total
Submission(s): 0    Accepted Submission(s): 0

Problem Description
Nike likes playing cards and makes a problem of
it.

Now give you n integers, ai(1≤i≤n)

We define two identical numbers (eg: 2,2

) a Duizi,
and three consecutive positive integers (eg: 2,3,4

) a Shunzi.

Now you want to use these integers to form Shunzi and Duizi
as many as possible.

Let s be the total number of the Shunzi and the
Duizi you formed.

Try to calculate max(s)

.

Each number can be used only once.

 
Input
The input contains several test cases.

For each
test case, the first line contains one integer n(1≤n≤106

).
Then the next line contains n space-separated integers ai

(1≤ai≤n

)

 
Output
For each test case, output the answer in a
line.
 
Sample Input
7
1 2 3 4 5 6 7
9
1 1 1 2 2 2 3 3 3
6
2 2 3 3 3 3
6
1 2 3 3 4 5
 
Sample Output
2
4
3
2

Hint

Case 1(1,2,3)(4,5,6)

Case 2(1,2,3)(1,1)(2,2)(3,3)

Case 3(2,2)(3,3)(3,3)

Case 4(1,2,3)(3,4,5)

 
 
题解:使用数组保存了每一个数字出现的次数
然后成1开始  循环到n    1ms的时间就可以了
dp记录的是前面循序的长度dp=0,1,2      ans记录的是答案     当你到了第i的数的时候   分以下情况
 
1》如果数据中没有i,也就是b[i]=0;那么把dp置0就好了
2》如果数据中有   然后dp=2了   那么不管有多少个i    我拿去一个i和前面的i-1,i-2放一起,形成一对  是最优的   (这你要明白)
3》如果数据中有   然后dp=0,1     要是i的数目是奇数   那就多出来的那个i   就和i-1放一起   dp++    不然的话  dp=0  ans+=b[i]/2;
 
 
 
 #include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <math.h>
using namespace std;
int b[];
//int qyh[10010],hyh[10010];
int main()
{
int a,n;
while(~scanf("%d",&n))
{
for(int i=; i<; ++i)
{
b[i]=;
}
for(int i=; i<n; ++i)
{
scanf("%d",&a);
b[a]++;
}
int dp=;
int ans=;
for(int i=; i<=n; ++i)
{
if(b[i]==)
{
dp=;
continue;
}
if(dp==)
{
ans+=;
ans+=(b[i]-)/;
dp=(b[i]-)%;
}
else if(dp==)
{
if(b[i]%==)
{
dp++;
ans+=b[i]/;
}
else
{
dp=;
ans+=b[i]/;
}
}
else if(dp==)
{
if(b[i]%==)
{
dp++;
ans+=b[i]/;
}
else
{
dp=;
ans+=b[i]/;
}
}
}
printf("%d\n",ans);
}
return ;
}

2017ACM/ICPC广西邀请赛 1007 Duizi and Shunzi的更多相关文章

  1. 2017ACM/ICPC广西邀请赛-重现赛

    HDU 6188 Duizi and Shunzi 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6188 思路: 签到题,以前写的. 实现代码: #inc ...

  2. 2017ACM/ICPC广西邀请赛

    A.A Math Problem #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll ...

  3. 2017ACM/ICPC广西邀请赛-重现赛(感谢广西大学)

    上一场CF打到心态爆炸,这几天也没啥想干的 A Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

  4. 2017ACM/ICPC广西邀请赛-重现赛 1007.Duizi and Shunzi

    Problem Description Nike likes playing cards and makes a problem of it. Now give you n integers, ai( ...

  5. 2017ACM/ICPC广西邀请赛 Duizi and Shunzi

    题意:就是一个集合分开,有两种区分 对子:两个相同数字,顺子:连续三个不同数字,问最多分多少个 解法:贪心,如果当前数字不构成顺子就取对子 /2,如果可以取顺子,那么先取顺子再取对子 #include ...

  6. 2017ACM/ICPC广西邀请赛-重现赛 1010.Query on A Tree

    Problem Description Monkey A lives on a tree, he always plays on this tree. One day, monkey A learne ...

  7. 2017ACM/ICPC广西邀请赛-重现赛 1004.Covering

    Problem Description Bob's school has a big playground, boys and girls always play games here after s ...

  8. HDU 6191 2017ACM/ICPC广西邀请赛 J Query on A Tree 可持久化01字典树+dfs序

    题意 给一颗\(n\)个节点的带点权的树,以\(1\)为根节点,\(q\)次询问,每次询问给出2个数\(u\),\(x\),求\(u\)的子树中的点上的值与\(x\)异或的值最大为多少 分析 先dfs ...

  9. 2017ACM/ICPC广西邀请赛-重现赛 1001 A Math Problem

    2017-08-31 16:48:00 writer:pprp 这个题比较容易,我用的是快速幂 写了一次就过了 题目如下: A Math Problem Time Limit: 2000/1000 M ...

随机推荐

  1. ms08067 分析与利用

    分析 漏洞位于 NetpwPathCanonicalize 函数里面,这个函数的作用在于处理路径中的 ..\ 和 .\ 信息.该函数声明如下: DWORD NetpwPathCanonicalize( ...

  2. Beta冲刺(1/7)——2019.5.22

    所属课程 软件工程1916|W(福州大学) 作业要求 Beta冲刺(1/7)--2019.5.22 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪万里 ...

  3. PageHelper分页正确用法

    依赖和配置就不说了,说用法 Page<Object> page = PageHelper.startPage(pageNum, pageSize); List<SysRoleDTO& ...

  4. SignalR入门一、通过 SignalR 2 进行实时聊天

    一:什么是signalR Asp.net SignalR是微软为实现实时通信的一个类库.一般情况下,signalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务 ...

  5. python的多线程是否没有用了

    python的多线程是否就完全没有用了呢? 相同的代码,为何有时候多线程会比单线程慢,有时又会比单线程快? 这主要跟运行的代码有关: 1. CPU密集型代码 (各种循环处理.计数等等 ),在这种情况下 ...

  6. shell脚本编程基础之while、for、until循环

    while及until循环结构 while CONDITION:do statement done 进入循环:条件满足 退出循环:条件不满足 当需要命令的执行状态返回值时,可以直接把整个命令当做循环的 ...

  7. React中兄弟组件传值

    兄弟组件传值 实际上是间接的通过第三方来实现传值,举例,第一个儿子把值传给父亲,父亲在把这个值传给第二个儿子,这样就实现了兄弟组件传值 来看代码: 父组件代码 import React from 'r ...

  8. Echarts 入门操作

    Echarts具有丰富的图表,可以说是数据可视化的神器: 1.下载Echarts 到官网或者点击以下文字[下载Echarts]即可下载: ①官网下载地址:https://echarts.baidu.c ...

  9. windows 10下启用docker的k8s集群

    安装Docker Desktop后,由于国内无法下载到Kubernete的文件,在Docker Desktop设置里勾选启用Kubernete一直显示”Kubernete is starting”状态 ...

  10. 【CS224n】Lecture8 Notes

    注:这是2017年课程的lecture8.一直都在用RNN,但是对它内部的构造不甚了解,所以这次花了一个下午加一个晚上看了CS224n中关于RNN的推导,不敢说融会贯通,算是比以前清楚多了.做个笔记, ...