初始如果沒有限制,很顯然每一頭牛高度都是h
當只有乙個限制,讓h[a]到h[b]的高度都減1即可
容易發現兩個限制不會相交(否則必然矛盾),只會包含或相離,因此沒有影響,直接差分/線段樹即可
(注意:1.不保證a
1 #include2view codeusing
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 }
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 可以相互看見...