求连续一段相同的数

第1题     count 查看测评数据信息
输入n个数,n<=500000,每个数不超过10000,求最多连续出现了多少个相同的数。

输入/输出例子1
输入:

10 

5 5 3 3 3 4 5 6 7 8

输出:

3

样例解释

#include<bits/stdc++.h>
using namespace std;
int n,a[500005],maxx=0,s=1,t;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    a[n+1]=a[n]+1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==a[i+1])
        {
            s++;            
        }     
        else 
        {
            if(s>maxx)maxx=s;
            s=1;
        }      
    }
    cout<<maxx;
    return 0;
}

第1题     USAICO 查看测评数据信息
FJ的农场举行了异一场USA奶牛奥林匹克竞赛.N(1 <= N <= 100,000; N 是一个奇数)只奶牛都已经获得了一个整数分数S(0 <= S <= 10,000).

FJ必须统计这些分数以便指导他们.帮帮他吧~~给出一个列表,计算最小值、最大值、中间数、众数。中间值是一个值M,至少一半的数<=M,至少一半的数>=M。众数是指出现次数最多的一个数。FJ知道分数里面只有一个众数。

输入格式
第1行:一个整数N。

第2..N+1行:每一行有一个整数,是一只奶牛的分数

输出格式
四个用空格隔开的整数:最小值、最大值、中间数、众数

输入/输出例子1
输入:

9

1

3

15

3

5

6

7

8

3

输出:

1 15 5 3

样例解释
9只奶牛的分数,在1到15之间,最小值是 1;最大值是 15;中间值是 5;众数是 3,出现了3次

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],maxx=0,s=1,maxi=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    cout<<a[1]<<" "<<a[n]<<" "<<a[n/2+1]<<" ";
    a[n+1]=a[n]+1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==a[i+1]) s++;                
        else 
        {  
            if(s>maxx) maxx=s,maxi=a[i];
            s=1;
        }      
    }
    cout<<maxi;
    return 0;
}

第2题     房间数量 查看测评数据信息
有n头奶牛,第i头奶牛的身高是h[i]。身高相同的所有奶牛都住在同一个房间。问需要多少个房间才能安排好所有奶牛的住宿。

输入格式
接下来有n行,第i行是一个正整数h[i]。

60%的数据: 1 <= n <= 1000, 1 <= h[i] <= 1000000。 

80%的数据:1 <= n <= 100000, 1 <= h[i] <= 1000000。 

100%的数据:1 <= n <= 100000, 1 <= h[i] <= 2000000000。 

输出格式
一个整数。 

输入/输出例子1
输入:

10 30 10 20 30 

输出:

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],s=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    a[n+1]=a[n]+1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]!=a[i+1]) s++;
    }
    cout<<s;
    return 0;
}

第3题     火柴 查看测评数据信息
     有N根火柴,第i根火柴的长度是Li。小明很喜欢正方形,所以小明希望用这些火柴拼出尽量多的正方形,但要同时满足如下条件:

1、一根火柴最多只能用在一个正方形中。

2、组成正方形的四根火柴,长度必须都相同。

给出N根火柴的长度,你的任务是计算:最多可以拼出多少个正方形?

输入格式
第一行,一个整数N。  

 第二行,N个整数,第i个整数是Li。

 对于60%的数据, 4 <= N <= 50, 1 <= Li <= 1000。

 对于100的数据,4 <= N <= 5000,1 <= Li <= 1000000000。

输出格式
一个整数,表示最多能拼出的正方形的数量      

输入/输出例子1
输入:

7

1  1  2  2  1  1  2 

输出:

1

输入/输出例子2
输入:

20

1  2  3  4  1  2  3  4  1  2  3  1  2  3  4  1  2  3  3  3 

输出:

3

#include<bits/stdc++.h>
using namespace std;
int n,a[5005],maxx=0,s=1;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    a[n+1]=a[n]+1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]==a[i+1])
        {
            s++;            
        }     
        else 
        {
            maxx=maxx+s/4; 
            s=1;
        }      
    }
    cout<<maxx;
    return 0;
}

第4题     众数 查看测评数据信息
小明最近在上数学课,老师给小明布置了个作业:在 n个数里找出所有的众数。 

众数的定义是这样的:在所有数当中出现次数最多的数被称为众数。并且根据定义,众 数有可能有多个。 

你能解决这个问题吗? 

输入格式
第一行一个整数n。 

第二行有n个整数,ai表示第i个数。 

40%的数据,1<=n<=400 

100%的数据,1<=n<=1000000,1<=ai<=1000000000

输出格式
输出一行,包括一个整数k,表示众数的个数。 

接下来一行包括k 个整数,每个整数都表示一个众数,并且从小到大输出。 

输入/输出例子1
输入:

10 

3 3 3 2 3 1 2 2 1 2 

输出:

2 3 

#include<bits/stdc++.h>
using namespace std;
map<int,int>person;
int M[1000000];
int t;
int main(){
    int n,id=0,Max=-100;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int s;
        cin>>s;
        person[s]++;
    }
    map<int,int>::iterator it;
    for(it=person.begin();it!=person.end();it++)
    {
        if(it->second>Max)
        {
            Max=it->second;
        }
    }
    for(it=person.begin();it!=person.end();it++)
    {
        if(it->second==Max)
        {
            id++;
        }
    }
    cout<<id<<endl;
    for(it=person.begin();it!=person.end();it++)
    {
        if(it->second==Max)
        {
            cout<<it->first<<" ";
        }
    }
    return 0;
}

第1题     序列问题二 查看测评数据信息
作为信息学高手,桐桐和晶晶数学也相当厉害,他们非常喜欢研究数列。一次桐桐写下一个数列,是 N 个不相同的正整数。晶晶想把它们重新排列,使整列满足条件:除第一个和最后一个数外,每个数都比它相邻的左右两个数小 或 比它相邻的左右两个数大。

当然可能满足上面的条件的方案有多种,你要输出“字典序最小”的一个。对于两个数列A和B,从第一项开始一个一个比较,出现第1次不同的项时,此项小的数列为字典序小些。  

输入格式
第一行:一个整数 N ( N<= 100 ),表示数列有N个整数。

第二行:N个不同的正整数,每个整数在 [ 1 , 1,000,000,000 ] 范围内。

输出格式
只一行,有N个整数,晶晶变化后的数列。

输入/输出例子1
输入:

1  5  10  4  

输出:

1 5 4 10

这题我不会,哪位大佬帮我?

感谢感谢!

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值