Loading

Tallest Cow

Tallest Cow

题目大意

FarmerJohn 有n头牛,它们按顺序排成一列。 FarmerJohn 只知道其中最高的奶牛的序号及它的高度,其他奶牛的高度都是未知的。现在 FarmerJohn 手上有R条信息,每条信息上有两头奶牛的序号(a和b),其中b奶牛的高度一定大于等于a奶牛的高度,且a,b之间的所有奶牛的高度都比a小。现在FarmerJohn想让你根据这些信息求出每一头奶牛的可能的最大的高度。(数据保证有解)

solution

计算所有牛的高低关系
例如说,最一开始全是一个高度,对于每一个条件,把区间的权值-1
对于一个条件,如果两个断点是一样的,那么就需要进行一个判重

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;

struct node {
    int first;
    int second;
}h[10005];

int vis[10005][10005];

int n, f[10005], high, r, t, a, b, c, d;

int main() {
    scanf("%d%d%d%d", &n, &t, &high, &r);
    for (int i = 1; i <= n; i++)
        f[i] = high;
    for (int i = 1; i <= r; i++) {
        scanf("%d%d", &a, &b);
        h[i].first = min(a, b);
        h[i].second = max(a, b);
        if (vis[a][b] == 1)continue;
        vis[a][b] = 1;
        for(int j = h[i].first + 1; j < h[i].second; j++)
            f[j]--;
    }
    for(int i = 1; i <= n; i++)
        printf("%d\n",f[i]);
    return 0;
}
posted @ 2020-05-16 10:44  Gary_818  阅读(134)  评论(0编辑  收藏  举报