POJ 3067 Japan 樹狀陣列

2022-05-07 06:03:07 字數 981 閱讀 4052

題意:左邊有n個城市,右邊有m個城市,現在修k條路,問會形成多少個交點

先按照x從小到大排,x相同的話,則按照y從小到大排,然後對於每乙個y統計前面有多少個y比它大,它們就一定會相交

另外要用long long

1 #include2 #include3 #include4 #include 5 #include6 #include7 #include8 #include

9 #include10 #include11

using

namespace

std;

1213 typedef long

long

ll;14

const

int inf = (1

<<30)-1;15

const

int mod=1000000007;16

const

int maxn=1000005;17

18int

a[maxn];

19int c[maxn];//

樹狀陣列

20int

n,m,k;

2122

struct

nodep[maxn];

2526

intcmp(node n1,node n2)

3031

int lowbit(int x)

3233

int sum(int

x)38

return

ret;39}

4041

void add(int x,int

d) 45}46

47int

main()

62 printf("

test case %d: %i64d\n

",++kase,ans);63}

64return0;

65 }

view code

poj 3067 japan 樹狀陣列

poj3067 japan 這裡求的是高架橋交叉的個數,首先按照規則排序,然後同上處理 這裡要注意的是 輸入輸出要用scanf 且要用sum 要用 int64 include include include define maxn 2005 define max 1000010 using name...

POJ 3067 Japan 樹狀陣列

題意 兩邊都有一些城市,從上到下排列,有些城市之間有路,路與路之間會形成交點,問最後會形成多少個交點。思路 首先可以把有聯絡的城市轉化成平面上的點,比如說1 和 2 之間有一條路,則代表有乙個點,座標為 1,2 轉化之後可以用樹狀陣列做,可以發現最後的結果其實和所給的順序無關,因此我們可以按y軸從小...

樹狀陣列 POJ 3067 Japan

樹狀陣列的典型應用,典型輸入如下 13 4 4 1 42 3 3 23 1 表示有4條連線,如圖 顯然有5個交點。怎麼求呢?對輸入的數對 x,y 做排序,先按x公升序排,x相等按y公升序排,然後對y做樹狀陣列,每次更新檢查在他後面有多少個元素即可。include include using name...