POJ 2481 Cows 排序 樹狀陣列

2022-01-19 15:09:12 字數 1128 閱讀 9928

題意:n隻羊,每只羊占有乙個[s,e]。如果乙隻羊的區間囊括它,而且長度比它長,就說明這只羊比它大。求每只羊比它本身大的羊的數目。

解析:

這道題和loj10114數星星: 基本一致。

只是這道題需要自己排下序。

可以發現,如果把每個區間看成座標的話,比它大的,其實就是位於它左上角的座標點,求這個數目即可。

排序:

(x,y)。對於y不同的,直接降序排列,y相同的,x公升序排列。這樣判斷的時候,直接看它前面的x值就可以了。

這個數目由樹狀陣列來維護,接下來就是基本操作了。

#include#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=1e5+10

;struct

node

st[maxn];

intnum[maxn];

intn;

intc[maxn];

bool

cmp(node a,node b)

int lowbit(int

x)void update(int

id)int getsum(int

id)int

main()

memset(num,

0,sizeof

(num));

memset(c,

0,sizeof

(c));

sort(st+1,st+1+n,cmp);

for(int i=1;i<=n;i++)

else

update(st[i].x);

}for(int i=1;i)

cout

<"";

cout

}}

POJ 2481 Cows 樹狀陣列

樹狀陣列 其實這題和 poj 2352 或者 就是道用樹狀陣列求逆序數的題目。先排序,我的排序是按照先s從小到大,如果s相等 e從大到小。貌似也沒什麼了。就樹狀陣列吧。include include include include include define inf 0x7fffffff defi...

poj 2481 Cows (樹狀陣列)

小記 之前沒做什麼修改之前,在poj上提交1393ms ac了。然後在hdu的web diy裡提交gnu c 超時了 於是不斷的改,在輸出的地方花費時間太多了。就是為了保證每兩個數之間有乙個空格,然後末尾沒有空格,我在for裡面加了乙個判斷,只要不是末尾就輸出乙個空格。然後就這樣超時了。樹狀陣列全用...

poj 2481 Cows(樹狀陣列)

題意 山坡上長滿三葉草,給定一群牛和他們喜愛的範圍 s,ei 如果一頭牛的s小於等於另一頭牛而e大於等於另一頭牛的,且s和e不同時相等,那麼這頭牛就比另一頭牛強壯。可以先對e從大到小排序,這樣保證遍歷時後出現的牛的上界一定滿足小於等於前面的,這樣只需要判斷他的下界滿不滿足就行,這就想到了用樹狀陣列。...