poj3067 Japan 樹狀陣列 逆序數

2021-07-29 12:11:03 字數 1134 閱讀 6690

日本有n個城市在東邊,從北至南編號為1 2 3,,,n,m個城市在西邊,從北至南編號為1 2 ,,,,m,k條高速公路將被建造

高速公路的一端在西邊,一端在東邊

輸入有多組樣例,

每組樣例第一行為

n m k

接下來有k行,分別為高速公路的端點

求高速公路的交點有多少個,不包括以城市為相交點

對ax,ay和bx,by兩條高速公路,有相交點必須(ax-bx)*(ay-by)<0

所以就按照左邊從大到小排序,找右邊的逆序數。

#include 

#include

#include

#include

using namespace std;

typedef long

long ll;

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

#define mp make_pair

#define pb push_back

const

int inf = 0x3f3f3f3f;

const ll infll = 0x3f3f3f3f3f3f3f3fll;

inline ll read()

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

return x*f;

}///

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

/////

const

int maxn = 1e6+10;

ll bit[maxn];

struct node

}a[maxn];

void add(int x,int v)

return res;

}int main()

cout << "test case "

<< cas << ": "

<< ans << endl;

}return

0;}

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