欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OJ 1470 小鱼的海岛之旅

程序员文章站 2022-04-03 13:49:40
描述暑假到了,小鱼到海岛上玩。从水平方向看海岛可以看成n个小块,每一个小块都有一个高度hi,水位一开始为0,随着水位的上升,海岛分成了若干块。现在有m个询问,求当水位为ai时,海岛会分成多少块。输入第一行输入两个正整数n,m,分别表示海岛小块个数和询问个数。第二行输入n个整数hi,表示每一块的高度。第三行输入m个整数ai,表示每一个询问。输出共m行,分别对应m个询问的答案。输入样例 17 31 2 3 1 2 1 31 2 3输出样例 1320...

描述

暑假到了,小鱼到海岛上玩。

从水平方向看海岛可以看成n个小块,每一个小块都有一个高度hi,

水位一开始为0,随着水位的上升,海岛分成了若干块。

现在有m个询问,求当水位为ai时,海岛会分成多少块。


输入
第一行输入两个正整数n,m,分别表示海岛小块个数和询问个数。

第二行输入n个整数hi,表示每一块的高度。

第三行输入m个整数ai,表示每一个询问。


输出
共m行,分别对应m个询问的答案。

输入样例 1

7 3
1 2 3 1 2 1 3
1 2 3
输出样例 1

3
2
0

 

对于这题我们可以使用数组来表示每块的高度,然后输入了水位之后让每一个高度减去水位即可,如果的减之后水位大于0而且它的前一项小于或等于0,那么这就是一块的开头,那么计数就要加每次遇到开头就加即可得到数据,但是题目说明是水位到了多少,所以原始数组要一直保持,我们可以使用一个临时数组去保存变更的数据。
 

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int n,m,x;
    while(cin>>n>>m)
    {
        int a[n],b[n];
        for(int i=0; i<n; i++)
            cin>>a[i];
        while(m--)
        {
            cin>>x;
            int sum=0;
            for(int i=0; i<n; i++)
            {
                b[i]=a[i]-x;
                if(b[i-1]<=0&&b[i]>0)
                    sum++;
            }
            cout<<sum<<endl;

        }

    }
    return 0;
}

 

本文地址:https://blog.csdn.net/qq_45703684/article/details/107598933

相关标签: OJ