最高的牛
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;
}
作者:qbning
-------------------------------------------
个性签名:曾经的我们空有一颗望海的心,却从没为前往大海做过真正的努力
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!