vijos 1697平面幾何

2021-07-09 14:06:38 字數 832 閱讀 8162

ac通道: 

[分析]

看到這道題目,我最先想到的是bzoj1370,明顯的並查集呀

我們設直線a『為與直線a垂直的直線,而互相平行的直線可以互相合併。

若直線a垂直於直線b,則直線a平行於直線b',這樣就可以把垂直轉換為平行。

具體實現過程請參考**。

#include #include #include using namespace std;

int n,m,q;

int fa[2000];

int find(int x)

return tmp;

}void merge(int x,int y)

int main()

merge(a,b);

merge(a+n,b+n);

} else

merge(a+n,b);

merge(a,b+n);

} }int nums=0;

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

if((find(i)==find(j)||find(i+n)==find(j+n))&&(i!=j))

nums++;

printf("%d\n",nums/2);

for(int i=1;i<=q;i++)

else if(find(a+n)==find(b)||find(b)==find(a+n))printf("vertical.\n");

else printf("no idea.\n");

} return 0;

}

平面幾何基礎

乙個很有資訊量的部落格 向量p1 x1,y1 p2 x2,y2 內積p1 p2 x1x2 y1y2,外積p1 p2 x1y2 x2y1 先利用外積根據是否有 p1 q p2 q 0來判斷點q是否在直線p1 p2上 再利用內積根據是否有 p1 q p2 q 0來判斷點q是否落在p1 p2之間 要求兩直...

平面幾何常用模板

平面幾何常用模板 定義點的類 struct point 定義向量的類 typedef point vector 定義向量的基本運算 vector operator vector a,vector b vector operator vector a,vector b vector operator ...

UVALive 4650 平面幾何

題意 給出n個點,每個點有點權,要畫兩個圓,每個圓圈中某些點 兩個圓圈中 的點不能相交 兩個圓圈中的點求和再相乘求最大值。有個很關鍵的條件是三點不 共線。相當於一條直線分成兩堆點 兩側 使得兩側和的乘積最大。直接列舉兩個點定下 一條直線,那麼直線上的兩個點有四種情況,同側兩種異側兩種。include...