POJ 2481 Cows (樹狀陣列)

2021-08-04 13:46:48 字數 854 閱讀 3053

養了一群奶牛,奶牛有乙個區間的食好,當a區間是b區間的真子集時,則b比a強,求每只奶牛比他強的有幾隻。

先建了乙個結構體,先按區間右側從大到小排序,相同則按左邊從小到大排序。這樣排序的好處在於我們無需考慮右邊的影響了,只要注意區間左邊就行。右邊是嚴格不遞增序列,那邊左邊只要越小就越強。那就查每個左區間在他之前的順序數就行了。左右都相同情況下特判。

樹狀陣列每次進來就查詢他左邊數字的個數。然後再向右更新。

#include

#include

#include

#include

using

namespace

std;

#define maxn 100001

int n;int c[maxn];

long

long ans[maxn];

struct wode

tree[maxn];

int lowbit(int x)

bool cmp(wode a,wode b)

}int query(int x)

return ans;

}int main()

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

// long long ans=0;

memset(c,0,sizeof(c));

memset(ans,0,sizeof(ans));

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

else

}for(int i=1;iprintf("%lld ",ans[i]);

printf("%lld\n",ans[n]);

}}

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從大到小排序,這樣保證遍歷時後出現的牛的上界一定滿足小於等於前面的,這樣只需要判斷他的下界滿不滿足就行,這就想到了用樹狀陣列。...