最高的牛

Tallest Cow

题目内容大概就是:
有N(1 ≤ N ≤ 10,000)头牛站成一列,每一头牛都有一个整数身高,告诉你最高的牛(可能是之一)是第I头,身高为H,下面告诉你R种哪两头牛可以互相看见(a看到b,指b>=a且,a-b之间的牛都比a矮)的关系,试求每头牛可能身高的最大值
输入:N I H R
.......
9 3 5 5
1 3
5 3
4 3
3 7
9 8
输出:
5
4
5
3
4
4
5
5
5
注意:
此题中给出的关系对可能存在重复
这个可以有一个模拟的思路:假设所有牛都是H,然后根据R个关系,每个区间都减一即可

BF代码如下

#include<iostream>

using namespace std;

int N,I,H,R;
int cow[10001];
bool s[10001][10001];
int main()
{
    cin>>N>>I>>H>>R;
    for(int i=1;i<=N;i++)
    cow[i]=H;

    while(R--)
    {
        int x,y,z;
        cin>>x>>y;
        if(x>y)
        z=x,x=y,y=z;
        if(s[x][y])continue;
        for(int i=x+1;i<y;i++)
        cow[i]--;
        s[x][y]=1;
    }

    for(int i=1;i<=N;i++)
    cout<<cow[i]<<'\n';

    return 0;
}
posted @ 2021-10-08 20:08  qbning  阅读(69)  评论(0编辑  收藏  举报
描述