【差分】Tallest Cow(poj 3263/luogu 2879)
程序员文章站
2022-07-12 17:39:43
...
Tallest Cow
poj 3263
luogu 2879
题目大意:
现在有n头牛,两头牛如果要相互看到,那他们之间的牛必须比他们两低,现在给出n,最高牛的位置和高度,和m对关系,要你求每头牛最高是多少
输入样例:
9 3 5 5
1 3
5 3
4 3
3 7
9 8
输出样例:
5
4
5
3
4
4
5
5
5
解题思路:
我们可以把题目看成每一头牛被多少对牛所包围,
然后直接用最大高度减去包围此牛的牛的对数即可,
然后我们可以用差分来求出被多少对牛包围
在开头+1的地方-1,在结尾的地方+1即可
代码:
#include<cstdio>
using namespace std;
int n,p,h,m,a,b,f[10100];
bool s[10100][10100];
int main()
{
scanf("%d %d %d %d",&n,&p,&h,&m);
for (int i=1;i<=m;++i)
{
scanf("%d %d",&a,&b);
if (a>b) p=a,a=b,b=p;//变成a<b
if (s[a][b]) continue;//计算过就不计算了
f[a+1]--;//差分
f[b]++;
s[a][b]=1;//记录
}
p=h;
for (int i=1;i<=n;++i)
{
p+=f[i];//计算结果
printf("%d\n",p);//输出
}
return 0;
}
推荐阅读
-
差分+思维 [USACO07JAN]Tallest Cow S(洛谷 P2879)
-
POJ3263 Tallest Cow 差分
-
POJ - 3263 Tallest Cow(简单差分)
-
POJ3263 Tallest Cow 差分
-
Tallest Cow POJ - 3263 差分 前缀和
-
【差分】Tallest Cow(poj 3263/luogu 2879)
-
poj 3263 Tallest Cow , 差分学习日记
-
Tallest Cow POJ - 3263(差分)(pair)
-
POJ - 3263Tallest Cow(前缀和+差分)
-
POJ - 3263 Tallest Cow【差分】