poj2481(二維偏序 樹狀陣列)

2021-10-01 04:18:33 字數 1883 閱讀 4040

農夫約翰的牛發現,他的田地裡沿著山脊生長的三葉草(我們可以將其視為一維數字線)特別好。

農夫約翰有n頭母牛(我們將母牛的編號從1到n)。每位農夫約翰的n頭母牛都有她特別喜歡的三葉草範圍(這些範圍可能重疊)。範圍由閉合間隔[s,e]定義。

但是有些母牛很強壯,有些卻很弱。給定兩個母牛:母牛i和母牛j,它們最喜歡的三葉草範圍是[si,ei]和[sj,ej]。如果si <= sj並且ej <= ei並且ei-si> ej-sj,我們說母牛i比母牛j強。

對於每頭母牛,有幾頭母牛比她強?農夫約翰需要您的幫助!

輸入包含多個測試用例。

對於每個測試用例,第一行是整數n(1 <= n <= 10 ^ 5),它是母牛的數量。然後是n行,其第i行包含兩個整數:s和e(0 <= s

輸入的末尾包含單個0。

對於每個測試用例,輸出一行包含n個以空格分隔的整數,其中第i個數字指定比母牛i強的母牛的數量。

3

1 20 3

3 40

1 0 0
huge input and output,scanf and printf is recommended.

給你一些區間,對每個區間進行詢問,查詢所有區間中能包含當前區間的個數。

二維偏序問題,我們可以對區間按照 s 從小到大排序,s相等則按照 e 從大到小排序。這樣可以使得後面的區間的起點一定大於前面的,因此我們就不用考慮s了,只需要考慮e就行了。

之後我們維護乙個樹狀陣列記錄一段區間內小於當前e的區間個數,然後我們求出已經插入所有的區間個數,減去小於的,剩下的就是大於等於當前e的區間個數。

不過這個題有個trick,就是區間相同的情況,這裡我們可以記錄下來有多少個相同的,直接一次插入完。

#include#include#include#include#include#include#include#include#include#include#include#define pi atan(1.0)*4

#define e 2.718281828

#define rp(i,s,t) for (i = (s); i <= (t); i++)

#define rp(i,s,t) for (i = (t); i >= (s); i--)

#define ll long long

#define ull unsigned long long

#define mst(a,b) memset(a,b,sizeof(a))

#define push_back() pb()

#define fastin \

ios_base::sync_with_stdio(0); \

cin.tie(0);

using namespace std;

inline int read()

while(c>='0'&&c<='9')

return a*b;

}inline void write(int n)

if(n>=10)

write(n/10);

putchar(n%10+'0');

}const int n = 1e5+7;

int c[n+2],res[n+2],n;

//維護樹狀陣列c為一段區間內的小於當前e的區間個數

//res陣列記錄詢問的結果

struct node

return res;

}int main()

rp(i,1,n-1) printf("%d ",res[i]);

printf("%d\n",res[n]);

}return 0;

}

poj 2481(樹狀陣列)

這題樹狀陣列明顯可解,不解釋,但是注意有相同的奶牛的處理 include include include include define n 100005 using namespace std int c n tem struct dian d n int cmp dian a,dian b int...

poj 2481 樹狀陣列

解法2 按si值做降序排序後,相當於求每個位置i左邊大於等於e i 的個數 樹狀陣列更新節點的路徑和求和的路徑要改變,getsum i 相當於求i i 1 maxn include include using namespace std const int maxn 100010 int sum m...

POJ2481 樹狀陣列

題意 給n個節點的s和e,求對於每個節點,其他節點和它的關係滿足si sj and ej ei and ei si ej sj 的個數 題解 由於e的關係遞減,s的關係遞增,因此可以先對e排序,然後利用樹狀陣列更新並查詢每個sj在其之前的si的個數就是問題的解 include include inc...