【差分】Tallest Cow(poj 3263/luogu 2879)
生活随笔
收集整理的這篇文章主要介紹了
【差分】Tallest Cow(poj 3263/luogu 2879)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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<bif (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; }總結
以上是生活随笔為你收集整理的【差分】Tallest Cow(poj 3263/luogu 2879)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 球冠体积公式 球冠体积公式简述
- 下一篇: 【二分】递增(luogu 3902)