bzoj1635 最高的牛

2022-06-07 14:48:11 字數 564 閱讀 8954

初始如果沒有限制,很顯然每一頭牛高度都是h

當只有乙個限制,讓h[a]到h[b]的高度都減1即可

容易發現兩個限制不會相交(否則必然矛盾),只會包含或相離,因此沒有影響,直接差分/線段樹即可

(注意:1.不保證a

1 #include2

using

namespace

std;

3struct

jia[10005];6

int n,m,h,b[10005];7

bool

cmp(ji x,ji y)

10int

main()

16 sort(a+1,a+m+1

,cmp);

17for(int i=1;i<=m;i++)

18if ((a[i].x!=a[i-1].x)||(a[i].y!=a[i-1

].y))

22for(int i=1;i<=n;i++)printf("

%d\n

",h+=b[i]);

23 }

view code

101 最高的牛

差分 區間處理小操作 這道題目的乙個核心要點,就是如何處理這些特殊的關係,也就是兩頭牛能互相看見。其實題目中已經告訴我們如何處理,因為我們發現,題目中要求牛的身高最高,那麼既然如此,我們完全可以將每一組關係 a,b 看作 a 1,b 1 這組牛身高比a,b這兩頭牛矮1.各位可以畫乙個圖,來更好理解這...

差分 最高的牛

最高的牛 有 n 頭牛站成一行,被編隊為1 2 3 n,每頭牛的身高都為整數。當且僅當兩頭牛中間的牛身高都比它們矮時,兩頭牛方可看到對方。現在,我們只知道其中最高的牛是第 p 頭,它的身高是 h 剩餘牛的身高未知。但是,我們還知道這群牛之中存在著 m 對關係,每對關係都指明了某兩頭牛 a 和 b 可...

演算法競賽高階指南 最高的牛

有 n 頭牛站成一行,被編隊為1 2 3 n,每頭牛的身高都為整數。當且僅當兩頭牛中間的牛身高都比它們矮時,兩頭牛方可看到對方。現在,我們只知道其中最高的牛是第 p 頭,它的身高是 h 剩餘牛的身高未知。但是,我們還知道這群牛之中存在著 m 對關係,每對關係都指明了某兩頭牛 a 和 b 可以相互看見...