題意:左邊有n個城市,右邊有m個城市,現在修k條路,問會形成多少個交點
先按照x從小到大排,x相同的話,則按照y從小到大排,然後對於每乙個y統計前面有多少個y比它大,它們就一定會相交
另外要用long long
1 #include2 #include3 #include4 #include 5 #include6 #include7 #include8 #includeview code9 #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 }
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...