poj 2481 樹狀陣列

2022-06-02 14:45:06 字數 1154 閱讀 5521

題目大意:給你很多線段的頭s和尾e,問每一條線段中包含了多少個線段,(s和e相同不計在內)

變成座標系上的點後求每個點左上角的點的個數

按y從大到小插入結點

31 2

0 33 4

01 0 0

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;

9#define mod 1000000007

10const

int inf=0x3f3f3f3f;11

const

double eps=1e-5;12

#define cl(a) memset(a,0,sizeof(a))

13#define ts printf("*****\n");

14int

n,m,tt;

15const

int maxn=100005;16

intc[maxn],val[maxn];

17int lowbit(int

x)18

21void add(int i,int

val)

2228}29

int sum(int

i)30

37return

s;38}39

struct

node

4048

}a[maxn];

49bool

cmp(node a,node b)

5054

intmain()

5569 sort(a,a+n,cmp);

70 val[a[0].id]=0

;71 add(a[0].x,1

);72

for(i=1;i)

7379 add(a[i].x,1

);80}81

int k=0;82

for(i=0;i)

8387 printf("\n"

);88}89

return0;

90 }

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...