給你n個區間,讓你求每個區間被真包含的區間個數有多少,注意是真包含,所以要是兩個區間的x y都相同就算0。(類似poj3067,cf652d)
對每個區間的x從小到大排序,相同的話按y從大到小排序。然後對列舉每個區間的y求其逆序對,然後在y的位置上置1。但是存在兩個區間完全重合,我的做法比較搓,就是判斷和前乙個區間是否完全相同,要是相同,就把前乙個答案賦值給這個。
1 #include 2 #include 3 #include 4 #include 5using
namespace
std;
6const
int maxn = 1e5 + 5
;7 typedef long
long
ll;8
intbit[maxn] , m , ans[maxn];
9struct
data
16}a[maxn];
1718 inline void add(int
i) 22
23int sum(int
i) 29
30int
main()
3142 sort(a , a +n);
43for(int i = 0 ; i < n ; i++)
47else
50add(a[i].y);51}
52for(int i = 0 ; i < n ; i++) 58}
59 }
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從大到小排序,這樣保證遍歷時後出現的牛的上界一定滿足小於等於前面的,這樣只需要判斷他的下界滿不滿足就行,這就想到了用樹狀陣列。...