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;
}
风吹过,我来过~