POJ 3067 Japan 樹狀陣列求逆序對)

2022-04-30 19:18:09 字數 641 閱讀 2086

poj - 3067 

題意:西邊給你一排點,東邊給你一排點,再給你k條連線東西的線,現問有多少個交點?

題解:pair存左右兩邊的點,對pair進行sort,此時得到的pair是按照first排好序的(如果first相同則按照second排序),此時可以發現只需要去找在逆序對即可。注意!!!!!!pair開n*n大小,導致我wa了好久。。。。。。

#include#include

#include

#include

#define pii pairusing

namespace

std;

const

int n=1e3+5

;using

namespace

std;

intc[n];

pii p[n*n];

intn,m,k;

void add(intx)}

ll getsum(

intx)

return

ans;

}int

main()

printf(

"test case %d: %lld\n

",_,ans);

}return0;

}

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